源代码中创建T-SQL表

时间:2017-11-09 00:01:55

标签: sql-server create-table

我从头开始创建一个新的SQL Server Azure数据库。我想建立一个强大的源代码控制,所以我要小心如何创建我的所有表。

检查表是否存在的最佳方法是什么,如果它还不存在,只执行我的CREATE TABLE语句?我正在将动态SQL传递给检查表存在的存储过程,但这是如此限制。必须有一种首选方式来实现这一目标。我的意思是我可以在每个查询前面加上:

IF NOT EXISTS (SELECT * 
               FROM sys.objects
               WHERE object_id = OBJECT_ID(N'[dbo].j[myTable]') AND type in(N'U'))
BEGIN
    CREATE TABLE myTable(....)
END

但这很重复。

1 个答案:

答案 0 :(得分:0)

更简单:

IF NOT EXISTS (SELECT * FROM sys.tables WHERE Name = N'myTable') 
   CREATE TABLE myTable .......

创意:使用更集中的 sys.tables目录视图,而不是包罗万象的sys.objects - 那么你就不必记住那些相当不直观的{{1}值... - 但是,最安全的方法来执行此类代码。

从SQL Server 2016开始,您还可以使用

type

命令(这是新的 - 见这里:https://blogs.msdn.microsoft.com/sqlserverstorageengine/2015/11/03/drop-if-exists-new-thing-in-sql-server-2016/