怎样在 sql server 2008 r2 中创建一个行级触发器

时间:2023-01-29 17:45:24
按着书上的写 都不对
把 for each row 添进去 就出现语法错误 真是奇怪

7 个解决方案

#1


怎样在 sql server 2008 r2 中创建一个行级触发器说得实际清楚点..

#2


没见过sqlserver有 for each row 的写法,好像是mysql的吧?建议:
1、认真阅读联机丛书
2、代码贴出来
3、错误信息贴出来

#3


别把MS Sql和mysql搞混了

#4


for each row在TSQL里对应的应该是游标(cursor).

#5


http://www.cnblogs.com/hoojo/archive/2011/07/20/2111316.html

#6


引用 楼主 u012421436 的回复:
按着书上的写 都不对
把 for each row 添进去 就出现语法错误 真是奇怪


sql server 2008r2没有for each row的语句,这个应该是oracle的语法吧,是行级触发器,也就是对每一行,都会触发一次。

在sql server 2008r2支持的触发器的语句,大致上是这样的:

--drop table test

--建一个表
create table test(id int,v varchar(10))
go

--再建一个表,用来实验触发器的效果
create table test_trigger(id int,v varchar(10))
go

--建立触发器
create trigger dbo.trigger_test
on test      --表
for insert   --针对哪种操作进行触发
as

insert into test_trigger(id,v)
select id,v from inserted   --inserted是系统表,存储了insert语句插入的数据
go 


--插入操作触发
insert into test
values(1,'aa')


--发现数据也插入到了test_trigger
select * from test_trigger
/*
id v
1 aa
*/

#7


for  each row 确实是Oracle里面的东西

#1


怎样在 sql server 2008 r2 中创建一个行级触发器说得实际清楚点..

#2


没见过sqlserver有 for each row 的写法,好像是mysql的吧?建议:
1、认真阅读联机丛书
2、代码贴出来
3、错误信息贴出来

#3


别把MS Sql和mysql搞混了

#4


for each row在TSQL里对应的应该是游标(cursor).

#5


http://www.cnblogs.com/hoojo/archive/2011/07/20/2111316.html

#6


引用 楼主 u012421436 的回复:
按着书上的写 都不对
把 for each row 添进去 就出现语法错误 真是奇怪


sql server 2008r2没有for each row的语句,这个应该是oracle的语法吧,是行级触发器,也就是对每一行,都会触发一次。

在sql server 2008r2支持的触发器的语句,大致上是这样的:

--drop table test

--建一个表
create table test(id int,v varchar(10))
go

--再建一个表,用来实验触发器的效果
create table test_trigger(id int,v varchar(10))
go

--建立触发器
create trigger dbo.trigger_test
on test      --表
for insert   --针对哪种操作进行触发
as

insert into test_trigger(id,v)
select id,v from inserted   --inserted是系统表,存储了insert语句插入的数据
go 


--插入操作触发
insert into test
values(1,'aa')


--发现数据也插入到了test_trigger
select * from test_trigger
/*
id v
1 aa
*/

#7


for  each row 确实是Oracle里面的东西