创建Table A增改触发Table B更新的数据库触发器需求
数据库触发器实现:Table A操作后联动更新Table B
需求概述
当Table A完成插入或更新操作后,若操作涉及的记录满足以下两个条件:
Comment字段为NULLColor字段不为NULL
则更新Table B中与该记录PersonId、Year、Quarter完全匹配的已有记录,将其Responded字段设为NULL。
示例场景
向Table A插入4条记录时,仅TableAId=1的记录符合触发条件(Comment为null、Color不为null),此时需将Table B中PersonId='Joe'、Year=2022、Quarter=4的TableBId=2记录的Responded字段设为null。
触发器实现代码(以SQL Server为例)
CREATE TRIGGER TR_TableA_AfterInsertUpdate ON TableA AFTER INSERT, UPDATE AS BEGIN SET NOCOUNT ON; UPDATE b SET b.Responded = NULL FROM TableB b INNER JOIN inserted i ON b.PersonId = i.PersonId AND b.Year = i.Year AND b.Quarter = i.Quarter WHERE i.Comment IS NULL AND i.Color IS NOT NULL; END; GO
代码说明
- 触发器监听
TableA的INSERT和UPDATE两种操作,确保两种场景都能触发联动更新 - 使用SQL Server内置的
inserted系统表获取本次操作产生的新记录(插入的记录或更新后的记录) - 通过内连接精准匹配
TableB中PersonId、Year、Quarter与目标记录一致的条目 - 仅对满足
Comment IS NULL且Color IS NOT NULL的记录执行更新,避免无效操作 SET NOCOUNT ON用于屏蔽触发器执行时的影响行数返回信息,防止干扰主操作的执行反馈
内容的提问来源于stack exchange,提问作者CGSD
相关产品推荐
相关产品推荐

