Inserted和Deleted在insert、update、delete的简单使用

Inserted和Deleted在insert、update、delete的简单使用

Inserted表和Deleted表,仅仅在触发器运行时存在。当insert、update、delete操作时,可使用借助两个表来输出(使用OUTPUT关键字)操作前后的数据的变化。

Insert

Update

Delete

Inserted

插入后该行的数据更新后该行的数据(新数据)不可用

Deleted

不可用更新前该行的数据(旧数据)删除前该行的数据

一、insert语句


1) Inserted表:存放着插入后该行的数据
2) Deleted表状态为不可用

SELECT TOP 1000 [Id]
      ,[name]
      ,[email]
  FROM [HLLDb].[dbo].[Table_1]

--truncate table [HLLDb].[dbo].[Table_1]

insert into [HLLDb].[dbo].[Table_1] (name,email) 
OUTPUT Inserted.name ,Inserted.email 
values ('a','a@xxx.com')

insert into [HLLDb].[dbo].[Table_1] (name,email) 
OUTPUT Inserted.name,Inserted.email 
values ('b','b@xxx.com')


二、update语句


1) Inserted表:存放着更新后该行的数据(新数据)
2) Deleted表:存放着更新前该行的数据(旧数据)

SELECT TOP 1000 [Id]
      ,[name]
      ,[email]
  FROM [HLLDb].[dbo].[Table_1]


update [HLLDb].[dbo].[Table_1] set name = 'c', email = 'c@xxx.com'
OUTPUT Deleted.name as oldname ,Deleted.email as oldemail
,Inserted.name as [newname],Inserted.email as newemail
where name = 'a'


update [HLLDb].[dbo].[Table_1] set name = 'd', email = 'd@xxx.com'
OUTPUT Deleted.name as oldname ,Deleted.email as oldemail
,Inserted.name as [newname],Inserted.email as newemail
where name = 'b'

三、delete语句


1) Inserted表状态为不可用
2) Deleted表:存放着删除前该行的数据

SELECT TOP 1000 [Id]
      ,[name]
      ,[email]
  FROM [HLLDb].[dbo].[Table_1]


delete [HLLDb].[dbo].[Table_1] 
OUTPUT Deleted.name as oldname ,Deleted.email as oldemail
where name in('c', 'd')



SELECT TOP 1000 [Id]
      ,[name]
      ,[email]
  FROM [HLLDb].[dbo].[Table_1]

 

欢迎加群,日用儿童母婴分享大牌淘宝京东优惠券     

   

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值