抱歉,如果已经问过了,但是我找不到任何东西。
我正在将某些东西从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中。
GO在查询之间放置命令。
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