【发布时间】:2013-08-31 18:11:35
【问题描述】:
我正在使用 SymmetricDS 数据库复制软件跨数据库复制表。
我已经为 PostgreSQL 创建了这个 XML 定义的表:
<table name="ServiceItem">
<column name="ServiceItemID" type="INTEGER" required="true" primaryKey="true"/>
<column name="ParentItemID" type="INTEGER" />
<foreign-key name="FK_ServiceItem_ServiceItem" foreignTable="ServiceItem">
<reference local="ServiceItemID" foreign="ParentItemID" />
</foreign-key>
</table>
我希望所有parentItemID 值必须存在于ServiceItemID 列中,这就是外键的意义所在。
但我在加载 SymmetricDS 时收到此错误:
[] - JdbcSqlTemplate - ERROR: there is no unique constraint matching given keys
for referenced table "ServiceItem". Failed to execute: ALTER TABLE "ServiceItem"
ADD CONSTRAINT "FK_ServiceItem_ServiceItem" FOREIGN KEY ("ServiceItemID")
REFERENCES "ServiceItem" ("ParentItemID")
如果我删除外键,一切都会按预期进行。此错误消息使我感到困惑,我不确定自己做错了什么。什么意思?
【问题讨论】:
-
对我来说,你好像把它们翻转了:
ParentItemID referencing ServiceItem (ServiceItemID)是描述层次结构的正常方式。
标签: xml postgresql foreign-keys