SQL Server在其他表上触发IF条件

时间:2015-03-31 08:02:15

标签: sql-server if-statement triggers conditional-statements

在SQL Server中,是否可以根据另一个表中的SELECT条件触发事件?

让我们在TABLE_1

中对此触发器进行成像
FOR INSERT AS
BEGIN
    INSERT INTO TABLE_2 (ID, COD_CAT) 
       SELECT COD_ART,'X3' 
       FROM INSERTED

此触发器可以正常工作。

仅当INSERTED.COD_ART中不存在TABLE_2时,我才会触发插入事件。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您不能选择性触发,但可以选择性地插入。使用LEFT JOIN仅插入不匹配的行,如下所示。

INSERT INTO TABLE_2 (ID, COD_CAT) 

SELECT COD_ART,'X3' 
FROM INSERTED A LEFT JOIN TABLE_2 B    
ON A.COD_ART = B.COD_ART
WHERE B.COD_ART IS NULL

答案 1 :(得分:0)

在table1上使用触发器并使用'如果存在'在插入之前

...
FOR INSERT AS
BEGIN
IF not EXISTS 
(SELECT COD_ART,'X3' 
FROM INSERTED A LEFT JOIN TABLE_2 B    
ON A.COD_ART = B.COD_ART
WHERE B.COD_ART IS NULL)
BEGIN
    INSERT INTO TABLE_2 (ID, COD_CAT) 
       SELECT COD_ART,'X3' 
       FROM INSERTED
END
END