我正在使用此问题How to automatically generate unique id in sql server的答案为表创建自定义ID。它工作得很好。
现在我有一个包含UID00000001
{等值的列{1}}等等。假设此列中的最后一个值为UID00000002
。现在我想计算在我的UID00000003
个页面之一中尚未通过C#插入的行的值。在这种情况下{ {1}}。我怎样才能达到这个价值?
任何帮助,将不胜感激。
谢谢。
答案 0 :(得分:1)
如果您不需要在数据库级别生成这些标识符(例如,其他一些进程在那里插入记录),您可以在应用程序中预先生成它们。像上面的东西:
class Generator
{
public static int UniqueId = 0;
public static int GetNextId()
{
return Interlocked.Increment(ref UniqueId);
}
}
然后,您的代码可以预分配这些标识符并格式化这些字符串。如果多个用户访问相同的功能,他们将收到其他标识符。但是,如果没有(成功)执行保存操作,那些标识符将丢失。
答案 1 :(得分:0)
您需要执行此查询以获取将为表生成的下一个标识:
SELECT IDENT_CURRENT('table_name')+1;
对于您的情况,它会将一些其他信息与下一个标识连接在一起,因此查询将如下所示:
SELECT 'UID' + RIGHT('00000000' + CAST(IDENT_CURRENT('table_name')+1 AS VARCHAR(8)), 8)
当然,您需要编写C#代码以将该查询发送到SQL Server。
话虽如此,请记住这一点:当您从该调用中获取值并保持该值时,如果在您持有该值的时间内将一条记录插入该表中,那么该值为否更长下一个值。
如果您在应用程序中插入记录后需要identiy值,请参阅this answer。