我的表格中有operation
和status
作为两列。我想设置一个触发器,以便每当operation
更新并且当前状态位于值列表中时,更新 status
和operation
值。
这是我到目前为止所提出的:
CREATE TRIGGER [dbo].[UPDATE_STATUS_FROM_OPS]
ON [dbo].[TICKET]
FOR UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF UPDATE([operation]) AND
(SELECT [status] FROM [dbo].[TICKET]) in
('open','closed', 'in progress')
BEGIN
UPDATE [dbo].[TICKET]
SET [status]=[operation]
END
END
GO
这根本不起作用。我错过了什么?
答案 0 :(得分:2)
在更新后发生更新触发器。您可以访问可以访问所有更新值的特殊表Inserted以及具有所有旧值的Deleted表:
CREATE TRIGGER [dbo].[UPDATE_STATUS_FROM_OPS]
ON [dbo].[TICKET]
FOR UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE Ticket
SET [Status] = i.Operation
FROM ticket
INNER JOIN INSERTED i ON ticket.id = i.id
WHERE i.[Status] IN ('open','closed', 'in progress')
END