----- 5.执行以下两条语句,在course表中添加课程号为'tx003',课程名为'数据库原理及应用',
------在stucourse表中添加一条记录,sno为已有学生的学号,cno为'tx003',score自定义即可,要求这两条语句要么都执行成功,要么都不执行
declare @err int 
begin transaction
       update course
       set cno='tx003'
      where cname='数据库原理及应用'
       set @err=@@ERROR
       if @err!=0
             begin
                 rollback transaction
             end
        update stucourse
       set score='90'
      where cno='tx003'and sno='200611001.0'
              set @err=@@ERROR
              if @err!=0
             begin
                 rollback transaction
             end
             commit transaction
             return
以上程序运行后没结果,但没有错误提示,不知道那错了请大家帮忙,谢谢啦!

解决方案 »

  1.   

    这语句在两句没有错情况下,是可以的,但是如果出错,不会有你想要的结果
    改为:
    declare @tc int
    set @tr=@@trancount
    if @tr>0 save trans s1
    else begin transaction      update course
          set cno='tx003'
          where cname='数据库原理及应用'      update stucourse
          set score='90'
          where cno='tx003'and sno='200611001.0'
          
    if @@ERROR!=0 
          begin
          if @tr>0 rollback trans s1
          else rollback transaction
          end
    else
         commit tranaction