首页 > 解决方案 > SQL Server 触发器更新另一个表的列

问题描述

我有两个名为Table A和的 SQL Server 表Table B。我有一个应用程序,它同时插入一行Table A和三行Table B。正如您在下面的屏幕截图中看到的那样,我们可以根据它们IDTableA中的TransID列和在中的列来链接这些插入的记录Table B

在表 B 上插入数据期间,如果插入的 3 行中的任何行包含列中调用的值PrintedPrinted我也想更新我Table A的相关记录PrintStatusPrinted

如何为此编写 SQL Server 触发器?

标签: sqlsql-server

解决方案


最好的解决方案是在您的代码(应用程序)中执行此操作,但如果没有办法,您可以为表 B 编写插入后触发器,如下面的触发器示例:

CREATE TRIGGER [dbo].[YourTrigger] ON [dbo].[TableB]
    AFTER INSERT
AS
DECLARE @id INT
BEGIN
SET NOCOUNT ON;
 SET @id = (SELECT DISTINCT ID FROM Inserted)
 IF EXISTS (SELECT * FROM Inserted WHERE Printed='Printed')   
  UPDATE TableA
  SET PrintStatus='Printed'
  WHERE ID = @id

END

愿这对你有帮助


推荐阅读