灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:5278回复:0

[SQL Server]SQL Server数据修改之返回修改的数据

楼主#
更多 发布于:2013-06-17 11:07
SQL Server数据修改之返回修改的数据
 
使用output子句嵌入到insert update delete 语句中,可以访问插入和删除的
 
虚拟表,以选择要返回的数据。
 
其中删除虚拟表(Deleted)存储原来的数据、插入虚拟表(Inserted)存储了更新后
 
或新插入的数据。使用output子句能够选择这些表中的所有列或指定列。
 
一、返回插入的数据
 
命令Insert使插入虚拟表Inserted表可用。
 
如:
 
insert into bumen(bmname)
 
output inserted.*
 
 values('新部门')
 
结果:
 
id bmname isdelete
 
11 新部门 0
 
二、返回更新前和更新后的数据
 
如:
 
update bumen set bmname='另外一个新部门'
 
output deleted.bmname as 原来的名称,inserted.bmname as 新名称
 
where bmname='新部门'
 
结果:
 
原来的名称 新名称
 
新部门 另外一个新部门
 
三、返回删除的数据
 
如:
 
delete from bumen
 
output deleted.id as 删除的部门编号,deleted.bmname as 删除的部门名称
 
where bmname='另外一个新部门'
 
结果:
 
删除的部门编号 删除的部门名称
 
11             另外一个新部门
 
四、将返回的数据存储到表变量中
 
基本语法:
 
output  ...
 
into  表变量
 
如:
 
declare @returndatatable table
 
(
 
id int default 0,
 
name varchar(50),
 
isdelete int
 
)
 
insert into bumen(bmname)
 
output inserted.* into @returndatatable
 
values('新部门')
 
select * from @returndatatable
 
结果:
 
id name isdelete
 
14 新部门 0

喜欢0 评分0
游客

返回顶部