2015-03-31 97 views
1

在SQL Server中,是否可以根據另一個表中的SELECT條件觸發事件?SQL Server在其他表上觸發IF條件

咱們成像這個觸發器在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

使用觸發器表1上,並使用「是否存在」插入

... 
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 
+0

IT WORKS - THANKS – simona 2015-03-31 10:52:01

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 
+0

之前,如果我這樣做沒有記錄插入TABLE_2。 – simona 2015-03-31 09:25:09

+0

錯字..請再試一次 – SouravA 2015-03-31 09:38:23