sql-server – 为什么选择SCOPE_IDENTITY()返回一个小数而不是一个整数?

所以我有一个表以标识列作为主键,所以它是一个整数。那么,为什么SCOPE_IDENTITY()总是返回一个十进制值而不是一个int到我的C#应用​​程序?这真的很烦人,因为十进制值不会隐式转换为C#中的整数,这意味着我现在必须重写一堆东西,并有很多帮助方法,因为我使用SQL Server和Postgres,Postgres返回一个整数为等效函数。

为什么SCOPE_IDENTITY()不只是返回一个整数?有没有人通常使用十进制/非身份值主键?

在SQL Server中,IDENTITY属性可以分配给tinyint,smallint,int,bigint,decimal(p,0)或numeric(p,0)列。因此,SCOPE_IDENTITY函数必须返回可以包含上述所有内容的数据类型。

如前面的答案所说,只是将其转换为int在服务器上返回之前,然后ADO.NET将检测其类型,如你所期望的。

http://stackoverflow.com/questions/2601620/why-does-select-scope-identity-return-a-decimal-instead-of-an-integer

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:sql-server – 为什么选择SCOPE_IDENTITY()返回一个小数而不是一个整数?