请教触发器问题。

wonderful_ecode 2009-05-21 10:50:32
比如有两个表 A 和B
在A 上建立个触发器,(当A数据更新是执行)
触发器里面执行的是,将A数据插入到B,但是建立了个事务,如果失败就回滚,也就是没有向B写入成功。
我想问的是此时A的数据更新成功了吗???
...全文
128 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pingjinzhao 2009-05-21
  • 打赏
  • 举报
回复
同意6楼
JonasFeng 2009-05-21
  • 打赏
  • 举报
回复
MARK下。
wanshichen 2009-05-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sdhdy 的回复:]
可以这样理解:触发器本身就是一个事务。
try:
SQL codecreatetablea(aavarchar(10))gocreatetableb(aaint)go--虽然在触发器里面没有加事务,a表照样没插入数据。createtriggertrig_insert_aonaforinsertasinsertbselect*frominsertedgoinsertaselect'asdf'select*fromaselect*fromb
[/Quote]
--小F-- 2009-05-21
  • 打赏
  • 举报
回复
学习了
JonasFeng 2009-05-21
  • 打赏
  • 举报
回复
这个要看触发器的类型
如果是AFTER,应该A表更新完毕。
如果是FOR,应该也更新完毕了。
如果是INSTEAD OF 肯定A表没有更新
sdhdy 2009-05-21
  • 打赏
  • 举报
回复
可以这样理解:触发器本身就是一个事务。
try:


create table a(aa varchar(10))
go
create table b(aa int)
go
--虽然在触发器里面没有加事务,a表照样没插入数据。
create trigger trig_insert_a on a
for insert as
insert b select * from inserted
go
insert a select 'asdf'
select * from a
select * from b
wonderful_ecode 2009-05-21
  • 打赏
  • 举报
回复
是否可以这样理解,只有触发器执行成功,它所关联的表才能执行相应的操作(删,改)
贾桂权 2009-05-21
  • 打赏
  • 举报
回复
不成功。
中国风 2009-05-21
  • 打赏
  • 举报
回复
不成功
csdyyr 2009-05-21
  • 打赏
  • 举报
回复
应该不成功,自己试下。

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧