所以我有一个带有标识列作为主键的表,所以它是一个整数。那么,为什么SCOPE_IDENTITY()
总是向我的C#应用程序返回一个十进制值而不是一个int?这真的很烦人,因为十进制值不会在C#中隐式转换为整数,这意味着我现在必须重写一堆东西并使用很多辅助方法,因为我使用了SQL Server和Postgres,而Postgres确实会为等效功能
为什么SCOPE_IDENTITY()
不只返回纯整数?有没有人通常将十进制/非身份值用作主键?
Answers:
您难道不可以在从查询或存储的proc中返回它之前就强制转换它(SP总是返回int,但也许您使用的是输出参数)?
喜欢 SELECT CAST(SCOPE_IDENTITY() AS INT) AS LAST_IDENTITY
为什么这样做呢?可能会更灵活并处理更大的数量。
SCOPE_IDENTITY
是内置函数..因此,当执行ExecuteScalar('insert...; select scope_identity());
该操作时,它将从该函数返回一个小数而不是预期的int。
SCOPE_IDENTITY
函数返回值是十进制(38,0)