Output在CRUD的区别
1.对于INSERT,可以引用inserted表以查询新行的属性.在insert into table output .
2.对于DELETE,可以引用deleted表以查询旧行的属性.在delete table output .
3.对于UPDATE,使用deleted表查询被更新行在更改前的属性,用inserted表标识被更新行在更改后的值. update table set c1= 1 output.
输出方式:
1.可以输出给调用方(客户端应用程序)
2.输出给表
3.两者皆可.
示例
1.insert
--基本形式
insert into test103 output inserted.* values(100,100),(200,200)
--输入形式,注意into后面的表(这里是test1033)必须已经存在,否则会报找不到对象语法错误,且必须与test103表结构相同!
insert into test103 output inserted.* into test1033 values(100,100),(200,200)
基本形式演示图:
如图可见,在insert 中使用output 并不影响insert本来的情况,只是会额外输出新行的数据
输入形式演示图:
如图可见,把新增的两行插入到test1033表中去了
2.delete
--基本形式
delete test101 output deleted.*
--输入形式,同理也需要test1011存在
delete test101 output deleted.* into test1011
如图,delete 中使用output可以把删除部分的数据输出出来,如果需要保留则可以使用into backup_table,但是backup_table必须已经存在并且与原表数据结构相同。
3.update
update t1 set id =1 output deleted.*,inserted.*
--deleted为修改前,inserted为修改后
演示如图
4.delete 就不多说了就是一样的
--基本形式//输入形式一样 这里就不多说了
delete t1 output deleted.* from test101 t1