首页 > 解决方案 > 在具有表锁的数据库中生成带有验证的随机密钥

问题描述

我想知道如何正确生成一个唯一的字符串键,例如 16 个字节,并将其放入数据库表中并验证唯一性。我想我必须使用 Random 类或RNGCryptoServiceProvider类在本地生成一个密钥,然后我应该以某种方式锁定感兴趣的数据库表以进行写入并检查具有指定密钥的记录是否已经存在。

如果是,则转到另一个循环并重复。如果否,则插入具有指定键的新记录,然后释放该表上的数据库锁。我不想使用 GUID,也不想使用数据库自​​增策略。我需要作为原子操作生成的密钥,并确保指定密钥不存在其他记录。有没有办法锁定表并在下次调用 SQL Server 时使用它?

标签: c#sql.netsql-server

解决方案


以下存储过程应将您的表锁定 2 分钟。您可以更改延迟参数以满足您的需要。

BEGIN TRAN  
SELECT 1 FROM TABLE WITH (TABLOCKX)
WAITFOR DELAY '00:02:00' 
ROLLBACK TRAN   
GO 

推荐阅读