我想创建SQL Trigger,如下所示:
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
在上面的触发器中,所有来自一个表ITEMS
的详细信息,现在某些值已移至SCHEMA_ID
等其他表,现在位于COMPONENT
和URL
在LINK_INFO
。
实际上在上面的insert/update/delete
表中,我们将更新,插入和删除Multi_Insert
表,现在我们可以在每个表插入ITEMS
上为插入事件编写三个触发器, COMPONENT
,LINK_INFO
,但我想只使用一个触发器实现此目的
这可能吗?
答案 0 :(得分:1)
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行我将存储来自不同表的count
(行数)。然后,我正在检查表是否有一些行的值。然后,在检查表是否有某些行之后执行insert
,update
和delete
。现在,那个困难的部分是什么?我给了你,你如何在单trigger
休息中完成所有这三项任务取决于你,你如何使用它们。您也可以参考此link