CREATE TABLE如果不是SQL Server中的等效项

Sou*_*abh 159 sql sql-server sql-server-2008-r2

可能重复:
SQL Server:检查表是否存在

CREATE TABLE IF NOT EXISTS适用于mysql但SQL Server 2008 R2失败.什么是等效语法?

Nei*_*ght 178

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

cars如果表尚不存在,上面将创建一个表.

  • 因为这是Google中关于此主题的首要问题,即使它已经关闭:`if not exists(select*from sys.tables t join sys.schemas s on(t.schema_id = s.schema_id)where s.name = 'myschema'和t.name ='cars')创建表myschema.cars(Name varchar(64)not null)` (60认同)
  • 回到2017年:`IF OBJECT_ID(N'dbo.Cars',N'U')是NULL BEGIN CREATE TABLE dbo.Cars(Name varchar(64)not null); END;` (34认同)
  • 更好的是 - 使用特定的`sys.tables`目录视图而不是必须记住表格中隐藏的`xtype` ... (31认同)
  • @hastrb,我认为你应该将你的评论转换为答案;) (8认同)
  • @hastrb 请单独回答,而不是在评论中回答。它确实更有意义且非常优雅的解决方案,多年来专业开发人员正在寻找这种隐藏的解决方案。谢谢 (6认同)
  • @marc_s:是的.另一个好方法:o)事实上,可能是更好的方法. (5认同)
  • @sanpat,不幸的是,问题被锁定了。 (2认同)