sas*_*740 12 sql database sql-server
很抱歉,如果已经被问到,但我找不到任何相关内容.
我正在从MySQL迁移到SQL Server我希望有一个.sql文件在数据库中创建数据库和表.在弄清楚语法扭结后,我已经让文件工作了(差不多).
如果我跑
IF db_id('dbname') IS NULL
CREATE DATABASE dbname
Run Code Online (Sandbox Code Playgroud)
它工作正常,如果我跑
CREATE TABLE dbname.dbo.TABLE1 (
);
...
CREATE TABLE dbname.dbo.TABLEN (
);
Run Code Online (Sandbox Code Playgroud)
它也工作正常.但是,如果我在同一个文件中运行它们,我会收到此错误
Database 'dbname' does not exist
Run Code Online (Sandbox Code Playgroud)
现在,CREATE TABLE语句不在我想要的IF语句中,但我似乎也找不到它的语法.({}不起作用?)
所以我的重要问题是,如何确保.sql文件中的特定命令在SQL Server中的另一个之前完成?
我的第二个问题是,如何在IF子句中包含多个指令?
为了清楚起见,我已将其运行到sqlcmd中.
Fos*_*sco 19
GO
在查询之间放置命令.
IF db_id('dbname') IS NULL
CREATE DATABASE dbname
GO
CREATE TABLE dbname.dbo.TABLE1 (
);
CREATE TABLE dbname.dbo.TABLEN (
);
Run Code Online (Sandbox Code Playgroud)
至于将表语句放在IF中,由于GO命令,你将无法进行.您可以在之后创建其他IF语句,以检查每个表是否存在.
块if的语法是:
IF condition
BEGIN
....
....
END
Run Code Online (Sandbox Code Playgroud)
在创建数据库和创建表之间,您将需要USE语句。
USE dbname
Run Code Online (Sandbox Code Playgroud)
这样,将在正确的位置创建表,而不必在所有内容上指定数据库名称。
另外,像其他所有人一样,开始并开始...结束。