sql 设计防止双重处理

sql design prevent dual procceesing

我有一个 SQL 存储过程调用它 "StPro",它由网络服务调用。
我希望在任何时候都不会超过一个 "StPro" 工作。
所以我需要一个想法,我可以在 "StPro" 中做什么来阻止另一个 "StPro" 开始工作。 尝试在 table 中设置一个值,告诉我是否已经有工作的 "StPro",当 "StPro" 开始时它将值设置为 1,当它结束时将其设置为 0,如果该值已经是 1 程序结束,什么也不做。
问题是,如果您同时启动两个 "StPro"s,该值不会及时更改以防止第二个启动。 谢谢

您可以创建 Table(ID int),将 PK 放在 table 上,然后在存储过程的顶部添加 insert into Table values(1)。并且在 proc delete * from Table 的末尾。如果发生错误,从 proc 添加 Try Catch 块和 return。