inserted和deleted表_beingdeleted

inserted和deleted表_beingdeletedcreate trigger updateDelete on user for update as begin update user set UpdateTime getdate from user inner join inserted on user UID Inserted UID end 上面的例子是在执行更新操作的时候同时更新 一下修改时间

create trigger updateDeleteTime
on user
for update
as
begin
update user set UpdateTime=(getdate()) from user inner join inserted on user.UID=Inserted.UID
end

上面的例子是在执行更新操作的时候同时更新,一下修改时间。
关键在于Inserted表
触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。

Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。

1.插入操作(Insert)
Inserted表有数据,Deleted表无数据

2.删除操作(Delete)
Inserted表无数据,Deleted表有数据

3.更新操作(Update)
Inserted表有数据(新数据),Deleted表有数据(旧数据)

应用实例

代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================================= -- Author:  -- Create date:  -- Description: <当是短信充值时修改相信的记录使记录不会重复获取> -- ============================================= ALTER TRIGGER [dbo].[updatestart] ON [dbo].[OrderTelecom] FOR update AS BEGIN DECLARE @state int; DECLARE @note2 varchar(50) SELECT @state= Inserted.ortState,@note2 =Inserted.ortNote2 from Inserted IF @state=1 AND @note2=1 begin --当发短信猫取走记录时修改状态为成功和取过的状态 update OrderTelecom set OrderTelecom.ortState=2 ,OrderTelecom.ortSmsmessages='短信充值成功' from OrderTelecom inner join Inserted on OrderTelecom.ortId=Inserted.ortId end if @state in(2,3,10) and @note2=0 begin update OrderTelecom set ortNote2=1 from OrderTelecom inner join Inserted on OrderTelecom.ortId=Inserted.ortId end END
编程小号
上一篇 2025-07-15 17:06
下一篇 2025-04-26 20:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/134539.html