定义目标表不存在的FK

时间:2011-12-23 12:59:53

标签: sql postgresql foreign-keys batch-processing suspend

当我在CREATE命令中创建直接定义FK的表并且目标表尚不存在时,会导致错误。

如果目标表存在,是否可以以某种方式暂停?

我的DBMS是Postgres。

示例(伪代码):

create table "Bar"
    foo_id integer FK of "Foo"."id",
    someattr text;

create table "Foo"
    id integer;

示例顺序错误,这就是为什么它不会运行。

我正在尝试根据许多sql文件中的定义批量重新创建数据库。

2 个答案:

答案 0 :(得分:2)

  

当我在CREATE命令中创建直接定义FK的表并且目标表尚不存在时,会导致错误。

     

如果目标表存在,是否可以以某种方式暂停?

解决这个问题的最佳方法很可能是:

  1. 按正确顺序创建表格,或
  2. 创建约束 在创建所有表之后,在表创建之外。

答案 1 :(得分:0)

蛮力总是一种选择。

继续运行DDL脚本,直到运行没有错误。

更优雅需要按顺序构建脚本。

添加存在检查是可能的,但我对postgres元数据不太熟悉。