我有两个名为Table A和的SQL Server表Table B.我有一个应用程序同时插入一行Table A和三行Table B.正如您在下面的屏幕截图中看到的,我们可以根据它们ID在TableA和TransID列中的列链接这些插入的记录Table B.
在上表B中的数据插入,如果任何行开出3个插入行包含一个名为值Printed的Printed列,我想更新我Table A的相关记录的PrintStatus列Printed也是如此.
如何为此编写SQL 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
Run Code Online (Sandbox Code Playgroud)
可能对您有帮助
它可能适合您的问题:(不确定 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)
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |