SQL Server触发器更新另一个表的列

Cry*_*tht 6 sql sql-server

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

在上表B中的数据插入,如果任何行开出3个插入行包含一个名为值PrintedPrinted列,我想更新我Table A的相关记录的PrintStatusPrinted也是如此.

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

El.*_*Hum 5

最好的解决方案是在您的代码(应用程序)中执行此操作,但是如果无法执行此操作,则可以为表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
Run Code Online (Sandbox Code Playgroud)

可能对您有帮助


Arn*_*lta 2

它可能适合您的问题:(不确定 100%)

CREATE TRIGGER TriggerTableB
ON TableB
AFTER INSERT
AS
    UPDATE TableA AS A
    SET PrintStatus = 'Printed'
    WHERE A.TranID = inserted.ID
        AND 'Printed' = (SELECT MAX(I.Printed)
                         FROM inserted AS I)
Run Code Online (Sandbox Code Playgroud)