查询MS SQL DB上的标识列

时间:2013-12-17 13:23:10

标签: c# sql sql-server identity

我在MS SQL 2008中创建了一个表,其中包含一个标识列(Start Value - 1和Increment也是1)和另外4列。我从C#ASP.NET访问此数据库。用于仅为非标识列推送数据。标识列将自动递增。

截至目前,我手动查询列值,其余为列。但是,如果所有其他四列值相等,我面临问题我没有得到我正在寻找的确切值

现在我的查询是,在C#中有什么原因可以在每次创建新记录时获取新创建的标识列的值。

感谢。

3 个答案:

答案 0 :(得分:2)

您的问题的答案实际上在于SQL Server。你可以运行:

SELECT @@identity
插入后的

以获取最后插入的行标识。

http://technet.microsoft.com/en-us/library/aa933167(v=sql.80).aspx

基于评论的编辑:

考虑使用此处引用的SCOPE_IDENTITY():

http://technet.microsoft.com/en-us/library/aa259185(v=sql.80).aspx

答案 1 :(得分:2)

您可以使用

SCOPE_IDENTITY()

将返回最近插入的行的主键值

答案 2 :(得分:0)

在SQL术语中,您可以根据需要输出记录。但是你如何将它应用于C#取决于你。例如:

INSERT INTO TABLE_A (SOMETHING, SOMETHINGELSE, RANDOMVAL3)
OUTPUT inserted.A_ID, inserted.SOMETHING, inserted.SOMETHINGELSE, inserted.RANDOMVAL3
SELECT 'ASD','DOSD', 123

但除非您使用合并,否则不能使用OUTPUT打印来自INSERT的连接表中的任何值。但我认为这完全是另一回事。

此外,在应用程序和数据库之间随时反弹这些数据并不是一个好习惯,所以如果可能的话,我会寻找替代方案。