2012-04-04 85 views
2

我工作的数据库迁移程序,我想一个数据库迁移到另一个数据库whoose已经创建的表。更具体地说,我有两个数据库几乎相同的表,一个是满的,另一个是空的。我的问题是迁移表值是按字母顺序进行的。有些表具有外键,如果这些表是从外键表中按字母顺序排列的,那么我不能输入值。有什么办法可以禁用java或postgresql的外键检查。任何帮助都会很棒。数据库插入失败的原因为外键约束

回答

2

如果我是正确的,有没有可能在PostgreSQL上禁用FK。正如@mcfinnigan所说,你可以在开始插入之前删除fk,或者你可以用DEFERRABLE键重新创建一个限制。请参阅postgresql CREATE TABLE documentation.

DEFFERABLE手段,FK将不检查,直到完成交易。

+0

是否有更新声明可以设置表可推迟? – mbaydar 2012-04-04 10:12:31

+0

您不能修改表上的约束。只有你可以添加或删除alter table语句。 ALTER TABLE ADD XXX约束fk_xxx [...]或ALTER TABLE XXX DROP约束fk_xxx。您必须使用DEFFERABLE键来限制重新定义表格。然后,如果使用DEFFERABLE键创建约束,则应该调用“SET CONSTRAINTS DEFERRED”。 – Aykut 2012-04-04 10:18:01

2

参照完整性是一个数据库属性,而不是JDBC属性 - 你需要运行您导入之前显式删除或禁用对数据库的FK约束,然后重新启用它们之后。

这可能是一个更好的主意,以确定您的数据的层次结构和插入数据开始与独立的记录,然后再插入过程中的相关记录链接到这些。

+0

感谢。我会尝试第一个。其次可能如此复杂。 – mbaydar 2012-04-04 10:01:35