>> 帽子游戏的BLOG

wjf
文章分类
相册分类
友情链接

sql server2005 TSql新功能学习总结(Output篇)

(2008-6-11 wjf)
点击:0
回复:0

这个功能太期待了,以前只有INSTEAD OF才有的功能移植到sql语句来了,太棒了!

可以通过引用插入的表和删除的表来访问被修改的行的旧/新映像,其方式与访问触发器类似。

INSERT 语句中,只能访问插入的表。

DELETE 语句中,只能访问删除的表。

UPDATE 语句中,可以访问插入的表和删除的表。

可以通过into语句将输出导入表变量中

 1
 2--先创建一个表
 3create table test2( 
 4[no] int ,
 5nvarchar(100)
 6)
 7--插入测试数据
 8insert into test2([no],n)
 9select 1,'a'
10union 
11select 2,'b'
12union 
13select 3,'c'
14go
15
16--插入数据时调用
17--把插入数据显示出来
18INSERT test2([no],n)
19OUTPUT INSERTED.*
20VALUES (4, N'd');
21GO
22/*
23no    n
244    d
25*/

26select * from test2
27go
28/*
29no    n
301    a
312    b
323    c
334    d
34*/

35
36
37
38DECLARE @MyTableVar table
39[no] int ,
40nvarchar(100)
41);
42
43--把[no]=1的记录删除,并把删除结果保存到表变量@MyTableVar中
44delete from test2
45output deleted.*
46into @MyTableVar
47where [no]=1
48
49select * from @MyTableVar
50/*
51no    n
521    a
53*/

54select * from test2
55/*
56no    n
572    b
583    c
594    d
60*/

61
62
63 
64DECLARE @MyTableVar table
65Newno int ,
66Newn nvarchar(100),
67Oldno int ,
68Oldn nvarchar(100)
69);
70
71-- 修改记录,保存修改前后的记录到表变量中
72update test2
73set n='ccc'
74output 
75    inserted.no,
76    inserted.n,
77    deleted.no,
78    deleted.n
79into @MyTableVar
80where [no]=3
81
82select * from @MyTableVar
83/*
84Newno    Newn    Oldno    Oldn
853        ccc        3        c
86*/

87select * from test2
88/*
89no    n
902    b
913    ccc
924    d
93*/

94
95

 

以下语句中不支持 OUTPUT 子句:

·         引用本地分区视图、分布式分区视图或远程表的 DML 语句。

·         包含 EXECUTE 语句的 INSERT 语句。


留言评论

暂无留言...

(2008-8-5)
……
  • 标题:
  • 内容:
技术支持:中国旅馆网 SOBNB.COM