比如有两个表 A 和B
在A 上建立个触发器,(当A数据更新是执行)
触发器里面执行的是,将A数据插入到B,但是建立了个事务,如果失败就回滚,也就是没有向B写入成功。
我想问的是此时A的数据更新成功了吗???

解决方案 »

  1.   

    可以这样理解:触发器本身就是一个事务。
    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
      

  2.   

    这个要看触发器的类型 
    如果是AFTER,应该A表更新完毕。
    如果是FOR,应该也更新完毕了。
    如果是INSTEAD OF 肯定A表没有更新