gpt4 book ai didi

c# - TSQL - 选择插入的行

转载 作者:行者123 更新时间:2023-11-30 13:38:26 26 4
gpt4 key购买 nike

有没有办法选择插入的行?我正在尝试使用 SqlCommand 运行以下查询(它用于在数据库中保留给定的 id):

INSERT INTO tbl (id)
SELECT COUNT(*) + 1 AS id from tbl

有没有办法返回插入的 id 列,以便我可以在我的应用程序中使用它?或者也许有更简单的方法可以实现这一目标?我必须绝对确定我保留了免费 ID,即使多个用户将同时使用该应用程序也是如此。

此外,有没有一种方法可以更改查询以选择第一个空闲 ID,从而避免出现间隙?

最佳答案

您可以轻松地使用 OUTPUT 子句来输出例如新创建的 ID 作为结果集,您可以使用标准 SqlDataReader 从您的 C# 应用中读取这些 ID:

INSERT INTO tbl (id)
OUTPUT Inserted.Id
SELECT COUNT(*) + 1 AS id from tbl

更新:OUTPUT 子句返回的数据可以从 C# 端捕获,就好像它是常规 SELECT 语句一样:

string insertStmt = "INSERT INTO tbl (id) " + 
" OUTPUT Inserted.Id " +
" SELECT COUNT(*) + 1 AS id from tbl";

using (SqlConnection conn = new SqlConnection(-your-connection-string-here-))
using (SqlCommand cmd = new SqlCommand(insertStmt, conn))
{
conn.Open();

// execute your INSERT statement into a SqlDataReader
using(SqlDataReader reader = cmd.ExecuteReader())
{
// read the values returned from the OUTPUT clause
while(reader.Read())
{
int insertedID = reader.GetInt32(0);
// do something with those values....
}
}

conn.Close();
}

关于c# - TSQL - 选择插入的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16638834/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com