create table UserName(
uid int,
uname nvarchar(10),
addTime datetime default getdate()
)create table UserInformation(
InforID int,
uid int,
uname nvarchar(10)
)alter trigger delete_test on
UserName
for Insert
as
declare @uid int
declare @uname nvarchar(10)
select @uid=@@identity
select @uname=uname from inserted
 --insert into UserInformation(uid,uname) values(@uid,@uname)
print SCOPE_IDENTITY()
print @uid
insert into UserName(uname) values('asdf')
打印出来的都是空值
我改如何才能获得自增uid

解决方案 »

  1.   

    create table UserName(
    uid INT IDENTITY,
    uname nvarchar(10),
    addTime datetime default getdate()
    )
    create table UserInformation(
        InforID INT IDENTITY,
        uid int,
        uname nvarchar(10)
    )
      

  2.   

    uid 你没有设置成自增列2005最好用output直接插入第二个表
      

  3.   

    触发器里面捕获不到
    在存储过程 中用select @@identity
      

  4.   

    INSERT UserName(Uname) 
    OUTPUT INSERTED.uid,
           INSERTED.uname INTO UserInformation
    values('asdf')
      

  5.   

        @@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 是相似的函数,因为他们都返回插入到表的 IDENTITY 列的最后一个值。     @@IDENTITY 和 SCOPE_IDENTITY 可以返回当前会话中的所有表中生成的最后一个标识值。但是,SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域。     IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 可以返回任何会话和任何作用域中为特定表生成的标识值。
         @@IDENTITY 函数的作用域是执行该函数的本地服务器上的当前会话。此函数不能应用于远程或链接服务器。若要获得其他服务器上的标识值,请在远程服务器或链接服务器上执行存储过程,并使(在远程或链接服务器的环境中执行的)该存储过程收集标识值,并将其返回本地服务器上的发出调用的连接。