sql - 如果表不存在则创建

标签 sql sql-server sql-server-2005 t-sql transactions

鉴于以下情况:

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/

相关文章:

sql - 如何对 Apache Hive SQL 代码执行 SonarQube 分析?

java - 如何将不同列的值分组到一行中?

sql-server - 如何使用 VBScript 从数据库复制到文本文件?

c# - 免费的SQL Server存储过程生成器?

sql - 如何以编程方式将非身份列更改为身份一?

MySQL 执行 INTO FROM 时出现错误 1327

sql - 如何在 SQL 中过滤掉包含 null 或空数据的特定列的行?

mysql - 如何为 wamp 服务器运行 mysql_upgrade 或让 Mysql 运行

c# - 如今“形状 - 追加”查询等效性

c# - Linq中的 "SELECT SYSTEM_USER"相当于什么