Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为三个表的insert创建SQL触发器_Sql_Triggers_Insert_Sql Update - Fatal编程技术网

如何为三个表的insert创建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

我想创建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_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在表上创建视图,然后在此视图上定义而不是触发器。但这要求对视图而不是基表执行操作。