Ear*_*rlz 84 sql-server primary-key scope-identity
所以我有一个以标识列为主键的表,所以它是一个整数.那么,为什么SCOPE_IDENTITY()
总是向我的C#应用程序返回一个十进制值而不是一个int?这真的很烦人,因为十进制值不会隐式转换为C#中的整数,这意味着我现在必须重写一堆东西,并且有很多辅助方法,因为我使用SQL Server和Postgres,Postgres确实返回一个整数等效功能..
为什么SCOPE_IDENTITY()
不只返回一个普通的整数?是否有人通常使用十进制/非身份值作为主键?
Chr*_*ter 99
在SQL Server中,IDENTITY
属性可以被分配到tinyint
,smallint
,int
,bigint
,decimal(p, 0)
,或numeric(p, 0)
列.因此,该SCOPE_IDENTITY
函数必须返回可以包含上述所有内容的数据类型.
正如之前的答案所说,只需int
在返回之前将其转发到服务器上,然后ADO.NET将按预期检测其类型.
Cad*_*oux 32
难道你不能在从查询或存储过程中返回它之前抛出它(无论如何,SP总是返回int,但是你可能正在使用输出参数)?
喜欢 SELECT CAST(SCOPE_IDENTITY() AS INT) AS LAST_IDENTITY
为什么会这样呢?可能更灵活,处理更大的数字.
尝试使用这个,你会得到一个整数:
ExecuteScalar('insert...; select CONVERT(int,scope_identity())');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25690 次 |
最近记录: |