c# - 在具有表锁的数据库中生成带有验证的随机密钥
问题描述
我想知道如何正确生成一个唯一的字符串键,例如 16 个字节,并将其放入数据库表中并验证唯一性。我想我必须使用 Random 类或RNGCryptoServiceProvider
类在本地生成一个密钥,然后我应该以某种方式锁定感兴趣的数据库表以进行写入并检查具有指定密钥的记录是否已经存在。
如果是,则转到另一个循环并重复。如果否,则插入具有指定键的新记录,然后释放该表上的数据库锁。我不想使用 GUID,也不想使用数据库自增策略。我需要作为原子操作生成的密钥,并确保指定密钥不存在其他记录。有没有办法锁定表并在下次调用 SQL Server 时使用它?
解决方案
以下存储过程应将您的表锁定 2 分钟。您可以更改延迟参数以满足您的需要。
BEGIN TRAN
SELECT 1 FROM TABLE WITH (TABLOCKX)
WAITFOR DELAY '00:02:00'
ROLLBACK TRAN
GO
推荐阅读
- firebase - 用户 displayName 在 Firebase 身份验证中返回 null
- node.js - nodejs function().anotherFunction() 他们是怎么做到的?
- azure - 信息:在 Azcopy 中扫描花费了太多时间
- haxe - 星期五晚上 funkin 编译的问题
- reactjs - RTK Query 使用 getState() 从另一个切片获取状态
- node.js - 如何用另一个列表替换一个列表并获得最终结果?
- node.js - 如何在资源请求上重新生成刷新令牌和访问令牌?
- javascript - 如何在我的 crud 表中实现排序?
- python - 在流式传输 Websocket 时使用 REST API
- node.js - jwt 访问令牌和刷新令牌流