sql - 如果不存在则并发创建表
问题描述
if not exists (select * from sysobjects where name='cars' and xtype='U')
create table cars (
Name varchar(64) not null
)
go
如果我从多个并发事务中运行上述批处理,它是否每次都能正常工作,或者 if 和 create 语句之间是否存在竞争?
解决方案
如果您的意思是多个事务将同时检查该表不存在然后同时尝试创建汽车表的竞争条件,那么是的。但何必担心,一个人会成功,其他人会失败。也就是说,我认为你应该重新审视你的做事策略。需要更多细节才能提供进一步的建议。
推荐阅读
- php - PHP 变量未使用 json_encode() 正确返回成功 AJAX/jQuery POST
- r - 将日期的预测类表示转换为实际日历日期
- crash - RegisterValidateFunction() 用于标志指针
- java - 获取任何空格或特殊字符后如何删除所有字符串值
- go - 是否可以将 OAuth 2.0 用于 Alexa for Business?
- python - 如何让用户保持登录状态
- android - Google Places Api 在 Android 应用程序中不起作用
- java - java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Map
- jmeter - 在 Jmeter 中分析摘要报告
- javascript - 菜单按钮在单击时更改阴影 React/CSS