[英]SQL Server : update trigger with 'if' condition
我正在尝试实现一个SQL Server触发器,以便在表A中使用if条件更新时更新表B中的行。
表A:
id_AA
status
desc1
desc2
表B:
id_BA
desc3
desc4
逻辑是这样的:
if user update table A set status == success
update B: when id_BA == id_AA
set desc3 = desc1
desc4 = desc2
我不是100%清楚你的逻辑,但我认为你正在寻找这样的东西:
CREATE TRIGGER dbo.TableA_Update
ON dbo.TableA
FOR UPDATE
AS
BEGIN
UPDATE TableB
SET Desc3 = i.Desc1,
Desc4 = i.Desc2
FROM TableB b
INNER JOIN inserted i
ON i.ID_AA = b.ID_BA -- MATCH CRITERIA IN QUESTION
AND i.Status = 'success' -- NEW STATUS IS "SUCCESS"
INNER JOIN deleted d
ON d.ID_AA = i.ID_AA
AND d.Status != 'success' -- PREVIOUS STATUS WAS NOT "SUCCESS"
END
编辑
如果TableB
没有相应的行,您可能需要考虑使用MERGE
CREATE TRIGGER dbo.TableA_Update
ON dbo.TableA
FOR UPDATE
AS
BEGIN
;WITH Updated AS
( SELECT i.ID_AA, i.Desc1, i.Desc2
FROM inserted i
INNER JOIN deleted d
ON d.ID_AA = i.ID_AA
AND d.Status != 'success' -- PREVIOUS STATUS WAS NOT "SUCCESS"
WHERE i.Status = 'success'
)
MERGE INTO TableB USING Updated ON ID_AA = ID_BA
WHEN MATCHED THEN
UPDATE
SET Desc3 = Desc1,
Desc4 = Desc2
WHEN NOT MATCHED THEN
INSERT (ID_BA, Desc3, Desc4) VALUES (ID_AA, Desc1, Desc2);
END
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.