由于外键约束导致数据库插入失败

时间:2012-04-04 09:53:00

标签: java database postgresql jdbc

我正在研究数据库迁移程序,我正在尝试将一个数据库迁移到另一个已创建表的数据库。更具体地说,我有两个数据库,几乎相同的表,一个是完整的,另一个是空的。我的问题是迁移表值按字母顺序进行处理。有些表有外键,如果这些表是从外键表中按字母顺序出现的,我就不能使用inser值。有没有办法禁用java或postgresql上的外键检查。任何帮助都会很棒。

2 个答案:

答案 0 :(得分:2)

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

最好先确定数据的层次结构,然后先从独立记录开始插入数据,然后在插入过程中将依赖记录链接到这些记录。

答案 1 :(得分:2)

如果我是对的,则无法在postgresql上禁用fk。正如@mcfinnigan所说,您可以在开始插入之前删除fk,或者可以使用DEFERRABLE键重新创建约束。请参阅postgresql CREATE TABLE documentation.

DEFFERABLE意味着,在交易完成之前不会检查fk。