在AFTER DELETE和AFTER INSERT触发器中,可以使用OLD.desired_id和NEW.desired_id引用新删除/插入的行。但是如何在AFTER UPDATE触发器中引用行呢?例如,在翻转行中的一个开关后,我需要从刚刚翻转其布尔值的行中获取一个ID,例如THIS.desired_id或其他什么?
发布于 2018-12-24 19:10:11
根据您的问题,您可以通过以下模板查询来实现。根据您的架构所需的更改。使用触发器中可用的表格,该触发器的内容被更新到表格中。
ALTER TRIGGER 'trigger_name_afterupdate'
ON [*db*].[*table*]
AFTER UPDATE
AS
BEGIN
UPDATE [*db*].[*table*]
SET last_updated_by = SYSTEM_USER
**(your flip switch condition goes here)**
FROM *db*.*table* x
WHERE EXISTS (SELECT 1 FROM inserted i WHERE i.id = x.id);
END发布于 2018-12-24 19:20:33
在INSERT FOR EACH ROW触发器中,new引用插入的行。没有被删除的行,所以old是无用的。
当触发动作是DELETE时,情况正好相反。然后,old引用已删除的行,而new,如果没有插入的行,则没有用。
如果操作为UPDATE,则old和new都引用一行。old在更改之前引用行,在更改之后引用new。
因此,您可以使用old.desired_id或new.desired_id,这取决于您想要的版本,更改前的版本或更改后的版本。
https://stackoverflow.com/questions/53912390
复制相似问题