我是Stored过程和触发器的新手。在针对特定行执行UPDATE
到LeaveRequest
表后,我有以下触发器:
ALTER TRIGGER [dbo].[LeaveRequestTrig]
ON [dbo].[LeaveRequest]
AFTER UPDATE
AS
BEGIN
DECLARE @StateId int
SET @StateId = (SELECT LeaveRequest.LeaveRequestStateId FROM LeaveRequest)
IF (@StateId = 2)
PRINT 'yes'
ELSE
PRINT 'no'
END
但问题是,如果我没有与上一个查询相同的参数,我可以SELECT
如何UPDATE
行UPDATE
d?
说我的user = kade
用于id = 55
,而1) foo=foo => foo=bar
2) foo = foo => foo=bar (whitespace before "=")
3) (foo)=foo => (bar)=bar ("=" is not just after "foo")
我可以在触发器中选择同一行吗?
答案 0 :(得分:1)
在触发器内部有一些名为DELETED
和INSERTED
的伪表,您可以在那里获取更新的ID。请注意,在一般情况下,一个查询中可能会有多个行更新,因此您可能会在DELETED
和INSERTED
伪表中获得多行。
答案 1 :(得分:0)
使用
SET @StateId = (SELECT LeaveRequest.LeaveRequestStateId FROM Inserted)
了解更多参考资料Trigger insert。 如果您担心返回多行,请点击此链接显示how to join the psuedotables to get single row