如何为三个表的insert创建SQL触发器
我想创建SQL触发器,如下所示:如何为三个表的insert创建SQL触发器,sql,triggers,insert,sql-update,Sql,Triggers,Insert,Sql Update,我想创建SQL触发器,如下所示: CREATE TRIGGER Multi_Insert ON ITEMS, COMPONENT, LINK_INFO FOR INSERT AS INSERT INTO Multi_Insert (ACTION, PUBLICATION_ID, ITEM_REFERENCE_ID, ITEM_TYPE, LAST_PUBLISHED_DATE, URL, SCHEMA_ID) SELECT 'ADD', PUBLICATION_ID, ITEM_RE
CREATE TRIGGER Multi_Insert ON ITEMS, COMPONENT, LINK_INFO
FOR INSERT
AS
INSERT INTO Multi_Insert (ACTION, PUBLICATION_ID, ITEM_REFERENCE_ID, ITEM_TYPE, LAST_PUBLISHED_DATE, URL, SCHEMA_ID)
SELECT 'ADD', PUBLICATION_ID, ITEM_REFERENCE_ID, ITEM_TYPE, LAST_PUBLISHED_DATE, URL, SCHEMA_ID
FROM inserted
在上面的触发器中,来自一个表的所有详细信息项
,现在一些值已移动到其他表中,例如SCHEMA\u ID
现在位于组件中
和链接信息中的URL
实际上,在上述表格的insert/update/delete
上,我们将更新、插入和删除Multi_insert
表格,现在我们可以为每个表格insert项
、组件
、链接信息
上的insert事件编写三个触发器,但是我只想使用一个触发器来实现这一点
这可能吗
DECLARE @i INT, @d INT;
SELECT @i = COUNT(*) FROM inserted;
SELECT @d = COUNT(*) FROM deleted;
IF @i + @d > 0
BEGIN
IF @i > 0 AND @d = 0
-- insert
IF @i > 0 AND @d > 0
-- update
IF @i = 0 AND @d > 0
-- delete
END
正如我告诉你的,我不太清楚你的问题。不管怎样,我从你那里得到了一个问题。我编写了一个简单的查询,这样您就可以获取引用并相应地使用它
从上面的查询中,@d
和@i
声明了两个变量,从第2行和第3行,我存储了不同表中的计数(行数)。然后,我检查表是否有行。然后,在检查表是否有行之后,执行插入
、更新
和删除
。现在,这其中最困难的部分是什么??我告诉过你,如何在单个trigger
rest中执行这三个操作取决于你自己,以及如何使用它们。您也可以引用此@Var..谢谢,但我不想更新多个表,但是我想在这三个表上插入任何内容时从多个表中读取值,我想使用一个触发器处理它,我不想为插入创建三个触发器从这三个表中读取数据后将执行的操作。你已经清楚地说明了你的问题。写下你的期望、你尝试过的内容和你当前的结果。否则你的问题将被解决。请看问题是的,我想这样做,但使用所有三个表格,因此,只有一个触发器可以更新/插入/删除我的表。表中有什么关联?ITEM_REFERENCE_ID是这些表之间使用的主键和引用键。可以使用JOIN在表上创建视图,然后在此视图上定义而不是触发器。但这要求对视图而不是基表执行操作。