一尘不染

SQL-在一个脚本中创建数据库和表

sql

抱歉,如果已经问过了,但是我找不到任何东西。

我正在将某些东西从MySQL移到SQLServer,我想要一个.sql文件来创建数据库和数据库中的表。解决了语法纠结之后,我已经使文件可以工作了(几乎)。

如果我跑步

IF db_id('dbname') IS NULL 
    CREATE DATABASE dbname

它工作正常,如果我运行

CREATE TABLE dbname.dbo.TABLE1 (
);
...
CREATE TABLE dbname.dbo.TABLEN (
);

它也可以正常工作。但是,如果我在同一文件中运行它们,则会收到此错误

Database 'dbname' does not exist

现在,我希望CREATE TABLE语句不在IF语句之内,但我似乎也找不到该语法。({}不起作用?)

所以我的大问题是, 如何确保.sql文件中的特定命令先于SQL Server中的另一个命令完成?

我的第二个问题是,如何在IF子句中包含多个指令?

为了清楚起见,我已经将其运行到sqlcmd中。


阅读 158

收藏
2021-03-17

共1个答案

一尘不染

GO在查询之间放置命令。

IF db_id('dbname') IS NULL 
    CREATE DATABASE dbname

GO

CREATE TABLE dbname.dbo.TABLE1 ( 
);

CREATE TABLE dbname.dbo.TABLEN ( 
);

至于将表语句放在IF中,由于GO命令,您将无法执行。之后,您可以创建其他IF语句,以检查每个表是否存在。

块的语法是否为:

IF condition
BEGIN
   ....
   ....
END
2021-03-17