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
在 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