首页 > 解决方案 > 如果不存在则并发创建表

问题描述

if not exists (select * from sysobjects where name='cars' and xtype='U')
    create table cars (
        Name varchar(64) not null
    )
go

如果我从多个并发事务中运行上述批处理,它是否每次都能正常工作,或者 if 和 create 语句之间是否存在竞争?

标签: sqlsql-servertsql

解决方案


如果您的意思是多个事务将同时检查该表不存在然后同时尝试创建汽车表的竞争条件,那么是的。但何必担心,一个人会成功,其他人会失败。也就是说,我认为你应该重新审视你的做事策略。需要更多细节才能提供进一步的建议。


推荐阅读