postgresql中的双外键
我正在尝试使用双主键作为外键。
Create table AAA (
AAA_id int primary key
);
create table BBB (
AAA_id int,
BBB_name character varying(20),
primary key (AAA_id, BBB_name)
);
create table CCC (
AAA_id,
BBB_name,
DDD_id,
... ???
);
表 AAA 是一个对象
表 BBB 与 AAA 是多对一的,并且保存 AAA 的别名
我正在尝试创建一个数据透视表 CCC,它在 DDD 和 BBB 之间保存多对一。
我想我想要类似
create table CCC (
AAA_id,
BBB_name,
DDD_id,
foreign key (AAA_id, BBB_name) references BBB(AAA_id, BBB_name) on update cascade
);
AAA_id 和 BBB_name 都是外键的东西,但它们也总是引用 BBB 中的同一行。
但这当然是无效的。在 postgreSQL 中产生这种行为的最佳方法是什么?
I am trying to use a double primary key as a foreign key.
Create table AAA (
AAA_id int primary key
);
create table BBB (
AAA_id int,
BBB_name character varying(20),
primary key (AAA_id, BBB_name)
);
create table CCC (
AAA_id,
BBB_name,
DDD_id,
... ???
);
table AAA is an object
table BBB is many to one with AAA, and holds aliases of AAA
I am trying to create a pivot table, CCC which holds a many to one between DDD and BBB.
I guess I want something like
create table CCC (
AAA_id,
BBB_name,
DDD_id,
foreign key (AAA_id, BBB_name) references BBB(AAA_id, BBB_name) on update cascade
);
where both AAA_id and BBB_name are foreign keys, but they are also always referring to the same row in BBB.
but of course that's not valid. what is the best way to produce this type of behavior in postgreSQL?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于 {AAA_id, BBB_name} 唯一标识 BBB 中的一行,因此 CCC 中的外键 {AAA_id, BBB_name} 也将引用 BBB 中的一个唯一行。
Since {AAA_id, BBB_name} uniquely identify a row in BBB, the foreign key {AAA_id, BBB_name} in CCC will also reference one unique row in BBB.