右侧
当前位置:网站首页 > 资讯 > 正文

关于deleted和inserted的信息

作者:admin 发布时间:2024-02-02 08:45 分类:资讯 浏览:40 评论:0


导读:触发器如何找到所更新的数据?createtrigger[dbo].[触发器名称]on[dbo].[表名]afterupdateasbegin--你需要的操作写在这里e...

触发器如何找到所更新的数据?

create trigger [dbo].[触发器名称]on [dbo].[表名] after updateasbegin --你需要的操作写在这里end在更新触发器中,通过 deleted 获取更新前的值;通过 inserted 获取更新后的值。

视频讲解的是mysql数据库中触发器的知识,在触发器内,获得触发该触发程序时的数据。答案是通过利用触发程序内的new和old来完成。

通过子查询查询到这个字段的值,然后再触发器需要的地方给其他字段设置为这个值就可以。

if :new.n1:old.n1 then update xxxxxxxxxx else null;如果你要建一个表的修改历史表,你可以只记录旧值,因为新值已经在你的原表了,这样就不用考虑那个字段被更新了 ,当然最好这个历史表有主键和修改时间。

...什么时候用到inserted表?什么时候用到deleted表?

它在Inserted表和Deleted表刚刚建立,其它任何操作还没有发生时被执行。因为Instead of 触发器在约束之前执行,所以它可以对约束进行一些预处理。

inserted表和deleted表用于存放对表中数据行的修改信息,他们是触发器执行时自动创建的,放在内存中,是临时表。当触发器工作完成,它们也被删除。它们是只读表,不能向它们写入内容。

SQL server 的话,在触发器中经常会用的是inserted、deleted这两个系统级别的;临时表,分别存储更新后、更新前的值。与触发器所在表结构完全一样。

inserted里存放的是修改后新的记录,deleted存放的是修改前老的记录;当对一张表进行删除操作(delete)时会产生deleted表,里面存放的是删除掉的记录。

语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。

临时表inserted表和deleted表有什么作用

当触发器执行时,将生成两个特殊的临时表:inserted和deleted。它们与触发表的结构相同,用于测试触发条件,用户无法直接更改其中的内容。

inserted存储的是新插入或更新后的最新资料 deleted存储的是删除的或修改前的资料。你可以通过inserted表来获得你更新后的值,然后再用这个值来更新另外的那个表,如不清楚可再追问。

可以定义一个无论何时用INSERT语句向表中插入数据时都会执行的触发器。当触发INSERT触发器时,新的数据行就会被插入到触发器表和inserted表中。inserted表是一个逻辑表,它包含了已经插入的数据行的一个副本。

SQL触发器的分类

1、DDL触发器:是指当服务器或数据库中发生数据定义语言(DDL)事件时将启用。DDL事件即指在表或索引中的create、alter、drop语句也。(3)登陆触发器:是指当用户登录SQL SERVER实例建立会话时触发。

2、SQL Server 2000 支持两种类型的触发器:AFTER 触发器和INSTEAD OF 触发器。其中AFTER 触发器即为SQL Server 2000 版本以前所介绍的触发器。

3、DML( 数据操纵语言 Data Manipulation Language)触发器:是指触发器在数据库中发生DML事件时将启用。DML事件即指在表或视图中修改数据的insert、update、delete语句。

标签:


取消回复欢迎 发表评论: