鉴于以下情况:
if object_id('MyTable') is null create table MyTable( myColumn int )
两个单独的调用者是否可能都将 object_id('MyTable') 计算为 null,因此都尝试创建表。
显然,在这种情况下,两个调用者之一会失败,但理想情况下,任何调用者都不应失败,而是一个调用者应该阻塞,另一个应该创建表,然后被阻止的调用者将看到 object_id('MyTable') 不为空,并且继续。
我可以在什么上应用独占锁,这样我就不会锁定超过绝对需要的锁?
最佳答案
初步检查后,在创建表时使用 try catch,如果错误是表已经存在,则继续,如果不存在,则问题更大
关于sql - 如果表不存在则创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1520399/