我遇到以下问题: 我需要创建一种账单管理系统。有账单,有关于上述账单的文章。文章可以在以后更改,但它们必须保持对已经制作的账单的方式。到目前为止,我正在做这样的事情:
CREATE TABLE contained (
bill_id INTEGER REFERENCES bill(bill_id),
FOREIGN KEY (article_id, revision) REFERENCES article(article_id, revision),
PRIMARY KEY (bill_id, article_id)
);
我使用了一个修订属性来实现它。每次文章更新时,我都会创建一个具有相同ID但具有递增版本号的新条目。 我还有第三个表引用了文章和账单表。账单上可以有多篇文章,但它不应该有多篇相同的文章(所以基本上,账单1可以有文章A rev 0和B rev 1,但它可以&#39 ; t有文章A rev 0和A rev 1)。我这样试过:
CREATE TABLE contained (
bill_id INTEGER REFERENCES bill(bill_id),
article_id INTEGER NOT NULL,
revision INTEGER NOT NULL,
FOREIGN KEY (article_id, revision) REFERENCES article(article_id, revision),
PRIMARY KEY (bill_id, article_id)
);
但它显然无法正常工作,因为我只能在主键中使用部分引用的复合键。有没有办法让这个工作或更容易的替代方案来解决这个困境?
编辑: 将第三个表格改为
ERROR: there is no unique constraint matching given keys for referenced table "bill"
给了我另一个错误:
{{1}}
我也不太了解。