SQL 服务器在其他 table 上触发 IF 条件

SQL Server trigger IF condition on other table

在 SQL 服务器中,是否可以根据另一个 table 中的 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 中时才触发该插入事件。

有什么想法吗?

你不能有选择性的触发器,但你可以有选择地插入。使用 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

在 table1 上使用触发器并在插入

之前使用 'if exists'
...
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