@@ identity是否返回主键或标识字段?

jus*_*ile 3 c# sql linq-to-sql

我的问题是我在SQL视图(MS SQL 2005)上有更新触发器,我在C#中映射到LINQ to SQL实体...

我的SQL看起来是正确的,但它抱怨尝试将空值插入到辅助表PK字段中.

我认为我的问题涉及将主键和标识作为主表中的单独字段.所以我的问题是这个....当使用@@ identity时,它是否会查看插入行的主键,还是看到指定了"IDENTITY"的字段?

Tho*_*mas 12

@@IDENTITY仅返回上一次插入的标识值.它不知道该值是否在主键列中使用,或者即使它对于给定列是唯一的.而不是使用@@IDENTITY,SCOPE_IDENTITY()尤其如果你有触发器,你应该使用.@@ IDENTITY只关心具有IDENTITY属性的列(表中只能有一个).表是否具有主键以及PK是否为标识列没有区别.

有关更多信息,请参见SCOPE_IDENTITY.

  • +1 @@ IDENTITY是插入任何范围的最后一个标识(从触发器内部或任何地方,只是最后一个),SCOPE_IDENTITY()为您提供当前范围中的最后一个标识. (2认同)