由 PowerDesigner 生成的 SQL 服务器脚本



我在PowerDesigner 15.1上有一个PDM。我用它为 SQL Server 2008R2 db 生成了一个脚本。

所以生成的脚本看起来像这样:

if exists (select 1 
    from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')     
    where r.fkeyid = object_id('TABLE1') and o.name = CONSTRAINT1') 
alter table TABLE1
    drop constraint CONSTRAINT1
go 

对于我拥有的每个表,都会重复此脚本块。

在我创建了表和约束的定义之后。

当我想使用 DataSourceInitializer(由 Spring 提供)和良好的 JDBC 驱动程序执行此脚本时,我遇到了以下错误:

Failed to execute SQL script statement at line 5 of resource class path resource [create_tables_SQL_SERVER.sql]: if exists (select 1

我不知道该怎么办。

将每个语句写在一行中或在每条语句的末尾添加一个分隔符(默认;):

if exists (select 1  from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TABLE1') and o.name = CONSTRAINT1') 
alter table TABLE1 drop constraint CONSTRAINT1

为了完整起见,因为代码解释得最好:魔术由以下代码完成 ResourceDatabasePopulator : 第 171..178 行

    String delimiter = this.separator;
    if (delimiter == null) {
        delimiter = DEFAULT_STATEMENT_SEPARATOR; // ";"
        if (!containsSqlScriptDelimiters(script, delimiter)) {
            delimiter = "n";
        }
    }
    splitSqlScript(script, delimiter, statements);

相关内容

  • 没有找到相关文章

最新更新