日期:2014-05-19  浏览次数:20673 次

关于 Sql server2000 事务机制中的问题
今天做一个存储过程时出了一个这样的问题,请各位帅哥美女们帮忙解答一下好吗?万分感谢!

有类似以下结构的三张表
用户表:
        create   table   users
          (     id   int   identity(1,1)   primary   key   ,
                username   nchar(15)   not   null   Unique,
                [password]   nchar(25)   not   null   ,
          )
角色表:
        create   table   roles
          (   id   int   identity(1,1)   primary   key   ,
              rolename   nchar(15)   not   null   Unique,
              note   nchar(100)  
            )
用户—角色表  
          create   table   user_role
          (     userid   int   foreign   key   references   users(id),
                roleid   int   foreign   key   feferences   users(id)
            )
角色表中有三条记录如下:
        insert   into   roles   values( 'admin ', '超级管理员 ')
        insert   into   roles   values( 'user ', '普通用户 ')
        insert   into   roles   values( 'guest ', '来宾用户 ')
新建用户存储过程:
        NewUser:
        create   procedure   NewUser
        (  
              @username   nchar(15),
              @password   nchar(25),
          )
        as  
        begin  
                begin   tran   add_user
                        insert   into   users   values(@username,@password)  
                        insert   into   user_role   values(scope_identity(),2)
                        insert   into   user_role   values(scope_identity(),3)
                commit   tran   add_user
        end  
以上存储过程编译通过,可是我发现执行的时候,事务不起作用,
如:
      exec   NewUser   'cccc ', '154645564 '
        结果如下:
                插入一条新记录       影响1行  
                插入一条新记录       影响1行  
                插入一条新记录       影响1行
      我再把上面的再执行一次
        exec   NewUser   'cccc ', '154645564 '
      结果如下: