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。
我有一个 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。