选择@@ IDENTITY; 好久不过?

3 c# sql-server ado.net

我抓住最后一个rowid,我正在这样做 select @@IDENTITY

 pk = (long)cmd.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)

我得到一个无效的类型转换bc这是int而不是long.为什么这不会很久?我能让它回归多久吗?

现在的解决方案是使用

 pk = Convert.ToInt64(cmd.ExecuteScalar());
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 8

使用SCOPE_IDENTITY ...这是正确的十进制(38,0)无论如何......

SELECT CAST(SCOPE_IDENTITY() AS bigint)
Run Code Online (Sandbox Code Playgroud)

但是,您应该注意@@ IDENTITY 也是 十进制(38,0)

这是因为它必须包含任何可以自动编号的数据类型,例如decimal和bigint

编辑:

显然它是由拆箱引起的.因人而异.