首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AFTER UPDATE触发器中引用最近更新的行

问如何在AFTER UPDATE触发器中引用最近更新的行
EN

Stack Overflow用户
提问于 2018-12-24 18:49:28
回答 2查看 169关注 0票数 0

在AFTER DELETE和AFTER INSERT触发器中,可以使用OLD.desired_id和NEW.desired_id引用新删除/插入的行。但是如何在AFTER UPDATE触发器中引用行呢?例如,在翻转行中的一个开关后,我需要从刚刚翻转其布尔值的行中获取一个ID,例如THIS.desired_id或其他什么?

EN

回答 2

Stack Overflow用户

发布于 2018-12-24 19:10:11

根据您的问题,您可以通过以下模板查询来实现。根据您的架构所需的更改。使用触发器中可用的表格,该触发器的内容被更新到表格中。

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 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,这取决于您想要的版本,更改前的版本或更改后的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53912390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档