在sql2000中,下面代码:
begin transaction
if exists(select title_id from titles where title_id='tc2')
  begin
    delete titles where title_id='tc2'
    rollback transaction
    print 'ok'
  end
问:人工能找到title_id 为tc2的记录,程序结果是()
答案是:a.删除该记录,不打印任何信息
b.删除该记录,并且打印ok
c。不删除该记录,并且打印ok
正确答案好像是
c
我不知道已经是rollback了为什么还把ok打印出来呢?
谢谢各位能够解答!!!

解决方案 »

  1.   

    D。不删除该记录,不打印ok
      

  2.   

    你自己放在SQL查询分析器检查一下不就行了
      

  3.   

    答案是C。
    rollback只是事务回滚,不影响代码的流程。
      

  4.   

    答案是C。
    rollback只是事务回滚,不影响代码的流程。
      

  5.   

    答案是C。
    rollback只是事务回滚,不影响代码的流程。
      

  6.   

    begin transaction
    if exists(select title_id from titles where title_id='tc2')
      begin
        delete titles where title_id='tc2'
        print 'ok1'
        rollback transaction
        print 'ok2'
      end结果是记录不删除,同时2条print语句都生效的
    事务回滚:在对数据库有影响的sql语句发生后,数据库会记录发生的前像和后像,如果commit,则将后像记入事务日志,如果rollback,则前像记入事务日志。这里的对数据库有影响的sql语句,应该是对数据库进行操作的一些逻辑操作,所以print语句肯定会被执行而不被回滚
      

  7.   

    begin transaction
    if exists(select title_id from titles where title_id='BU1032')
      begin
        delete titles where title_id='tc2'
        print 'ok1'
        rollback transaction
        print 'ok2'
      end-------------------
    结果(所影响的行数为 0 行)ok1
    ok2
      

  8.   

    c。不删除该记录,并且打印ok
      

  9.   

    c.不删除该记录,并且打印ok
      

  10.   


    答案是C。
    rollback只是事务回滚,不影响代码的流程
      

  11.   

    rollback后还是要往下执行的。
    rollback的功能只是将之前的一段记录抹去;不影像继续执行下面的代码
      

  12.   

    C,rollback只是事务回滚,不影响代码的流程
      

  13.   

    create table titles(
      title_id  varchar(10)
    )insert titles
    select 'tc1' union all
    select 'tc2'
    begin transaction
    if exists(select title_id from titles where title_id='tc2')
      begin
        delete titles where title_id='tc2'
        print 'ok1'
        rollback transaction
        print 'ok2'
      end--result:(所影响的行数为 1 行)ok1
    ok2--rollback transaction 只是回滚事务,并不是返回的意思,所以肯定要执行"print 'ok2'"
    这个语句的。--加一个return:
    begin transaction
    if exists(select title_id from titles where title_id='tc2')
      begin
        delete titles where title_id='tc2'
        print 'ok1'
        rollback transaction
        return 
        print 'ok2'
      end--result:(所影响的行数为 1 行)ok1
      

  14.   

    当然是C 了事务回滚,跟程序执行有P关系   ,也没有goto或return