在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
时,我才会触发插入事件。
有什么想法吗?
答案 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