3

我想创建如下 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  

在上面的触发器中,所有细节都来自一个表ITEMS,现在一些值已移动到其他表,例如SCHEMA_IDnow inCOMPONENTURLin LINK_INFO

实际上在insert/update/delete上面的表中,我们将更新,插入和删除Multi_Insert表,现在我们可以为每个表的插入事件编写三个触发器 insert ITEMS, COMPONENT, LINK_INFO,但是我想只使用一个触发器来实现这一点

那有可能吗?

4

1 回答 1

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声明的两个变量以及从第二行和第三行开始,我正在存储count来自不同表的(行数)。然后,我正在检查表是否有某些行的值。然后,执行insert,updatedelete在检查表是否有某些行之后。现在,那有什么困难的部分?我给了你,你如何在一个休息中完成这三个动作trigger取决于你,你如何使用它们。你也可以参考这个链接

于 2012-12-25T09:24:59.060 回答