【发布时间】:2021-12-06 22:08:20
【问题描述】:
以下 C# 代码正确使用 MySQL 服务器从表中获取列的 MAX 值,同时此查询将值加 1,如下所示:
SqlDataReader dr = new SqlCommand("SELECT (MAX(Consec) +1) AS NextSampleID FROM Samples", Connection).ExecuteReader();
while (dr.Read())
{ //in case of Maximum value of Consec = 555, the expected result: A556
txtSampleID.Text = "A" + dr["NextSampleID"].ToString();
}
但是,在将数据库从 MySQL 迁移到 SQL Server 后,此代码不再起作用,如果 MAX(Consec) = 555 运行查询后的结果是 A555,则结果相同,它不会像以前那样添加 1 使用MySQL 服务器。
问题:获取Consec的MAX值的正确查询是什么以及如何在同一个查询中将MAX的结果加“1”?
【问题讨论】:
-
我没有发现查询有任何问题。你确定 Max(Consec) = 555 而不是 554?
-
这段代码在高并发下无论如何都会失败。你为什么不像你应该使用的那样使用
IDENTITY或SEQUENCE,为什么要重新发明轮子? -
However this code does not work anymore after migrating the DB from MySQS to MS SQL错误,此代码根本没有用。它避免问题的唯一方法是因为它很少使用——记录没有被删除,一次只有一个人尝试插入数据
标签: c# sql sql-server select