Sql server 2008 如何一次只允许一个用户在SQL Server表中执行insert触发器?

Sql server 2008 如何一次只允许一个用户在SQL Server表中执行insert触发器?,sql-server-2008,concurrency,triggers,sql-insert,uniqueidentifier,Sql Server 2008,Concurrency,Triggers,Sql Insert,Uniqueidentifier,我有一张桌子如下 customerid name total_salary basicpay cca tax TransactionID --------------------------------------------------------------- 101 x 12000 5000 1000 1000 2018101 102 y 15000 6000 1200 1200 2018

我有一张桌子如下

customerid name total_salary basicpay cca tax    TransactionID
---------------------------------------------------------------
101         x    12000          5000  1000 1000    2018101
102         y    15000          6000  1200 1200    2018101
每当我插入新记录时,我都会计算
总工资
,并使用insert触发器基于年份创建唯一的顺序交易id

在生产中,该表将同时由多个用户使用。当向表中插入一条记录时,由于多个用户同时访问/插入该表,它会创建重复的事务id

事务id逻辑为:

Transaction ID= current year+record count in the current year+1

如何一次只允许一个用户在该表上执行insert触发器,以便创建唯一的事务id?

对于事务id,为什么不在表id上使用自动递增id?您仍然可以保存年份和记录计数,但不要将其用作您的唯一ID,请使用主键和自动递增Hi Brad,非常感谢,我接受主键和自动递增,除非我使用基于年份的唯一ID生成。但是如何根据年份提供唯一的顺序id呢?。例如,如果2019年开始,id应该从2019101开始。我知道您可以为自动增量设定值(这意味着从一个特定的数字开始。因此,您可以将2019年的种子值设置为2019000,之后的每个ID将增加1。它没有月份,然后在新年开始时,您可以将自动增量种子值更改为新的一年。但是,如果您在一年中种子值过多,则可能会很快将2019年更改为2020年,因此您可能需要有一个大整数,大概是20190000000(或者取决于你的期望值)谢谢你的回复。这非常有帮助。:)干杯。