请问如何给XX_ID(PK, int,not null)这样的字段赋值?
我觉得奇怪,因为我用C#插入的时候,不需理会它。
但我用t-sql的时候,说不能插入null。
请教stored procedure里面该怎么做?另外一个问题,我用
insert into....
然后,select IDENT_CURRENT()。
我有一个疑问,因为很可能在insert into之后,select IDENT_CURRENT()之前有另外的insert into。
这样IDENT_CURRENT()得到的就不是我想要的那个ID。请问是否需要Lock 该表?如何lock?

解决方案 »

  1.   

    不太可能,可能是你的程序里有其它设置用select @@IDENTITY试试
      

  2.   

    IDENT_CURRENT 返回为某个会话和用域中的指定表生成的最新标识值。
    @@IDENTITY 返回为跨所有作用域的当前会话中的某个表生成的最新标识值。
    SCOPE_IDENTITY 返回为当前会话和当前作用域中的某个表生成的最新标识值。
      

  3.   

    在sql中,字段XX_ID(PK, int,not null)插入时必须有值不能为空,因为XX_ID是主键且规定不能为空.
      

  4.   

    IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。
    @@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
    SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。
    我建议你用@@IDENTITY就可以得到当前操作的标示值了
      

  5.   

    请问如何给XX_ID(PK, int,not null)这样的字段赋值? 
    --赋值为整型,我觉得奇怪,因为我用C#插入的时候,不需理会它。 
    但我用t-sql的时候,说不能插入null。 
    -- 估计是你程序中有赋值,而T-SQL中没有,请教stored procedure里面该怎么做? 
    -- 在sp中指定一个值即可.另外一个问题,我用 
    insert into.... 
    然后,select IDENT_CURRENT()。 
    我有一个疑问,因为很可能在insert into之后,select IDENT_CURRENT()之前有另外的insert into。 
    这样IDENT_CURRENT()得到的就不是我想要的那个ID。请问是否需要Lock 该表?如何lock? -- 在你下次insert 之间 select IDENT_CURRENT()一下就可以了.不用锁表吧