if exists (select * from sysobjects where name='proc_register')
drop procedure proc_register
go
create procedure proc_register
@loginid nvarchar(50),
@loginpwd nvarchar(50),
@name nvarchar(50),
@address nvarchar(200),
@phone nvarchar(100),
@mail nvarchar(100),
as
insert into Users (loginid,loginpwd,name,address,phone,mail,userroleid)
values (@loginid,@loginpwd,@name,@address,@phone,@mail);
select @@identity
go
上面是一个注册的存储过程,注册后想返回用户的信息通过select @@identity找到刚注册的人但是如果人很多注册的时候select @@identity会冲突现在想在运行存储过程的时候暂时把表锁住,执行完再解锁,上面的存储过程要如何改?

解决方案 »

  1.   

    忘记了一点select @@identity能不能只取USER表的@@identity会不会因为其他表插入而取到其他表的@@identity
      

  2.   

    create procedure proc_register
    @loginid nvarchar(50),
    @loginpwd nvarchar(50),
    @name nvarchar(50),
    @address nvarchar(200),
    @phone nvarchar(100),
    @mail nvarchar(100),
    @id int output--这儿取值
    as
        insert into Users (loginid,loginpwd,name,address,phone,mail,userroleid)
        values (@loginid,@loginpwd,@name,@address,@phone,@mail);
        select @id = @@identity
    go
      

  3.   

    前后加一个begin tran end tran?
    真的没考虑过这个问题哦,观望一下