postgresql - Postgres : Are Nested Foreign Keys allowed?

标签 postgresql foreign-keys

我的意思是:

FK1 -> 1FK2 -> 2PK

请注意,1FK2 是 PK 到 FK1,而 1FK2 是 FK 到 2PK。所以嵌套结构中的key是一个FK和一个PK。

一个例子:

--- Like an interface
CREATE TABLE q_content (
user_id SERIAL PRIMARY KEY, ---);

---- tables that refer to it
CREATE TABLE questions (
user_id SERIAL 
    references q_content(user_id) ---);

CREATE TABLE removed_questions (
user_id SERIAL
    references questions(user_id) ---);

最佳答案

是的,列可以是其表的主键,也可以是父表的外键。

但是,在这种情况下,您不需要使用 SERIAL 作为 questions.user_idremoved_questions.user_id 的数据类型。 SERIAL 数据类型隐式创建一个新的序列对象,您不需要它,因为这些主键必须仅包含它们引用的表中已存在的值。

此外,这与您的问题无关,但我根本不会定义 removed_questions 表。这应该是 questions 表中的属性列。

关于postgresql - Postgres : Are Nested Foreign Keys allowed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1309817/

相关文章:

sql - 外键引用的表能否依赖于另一个字段的内容?

sql - 为每个学生选择*最新*成绩信息

macos - Mac OSX 上的 PostgreSQL - 无法以 postgres 用户身份登录

mysql - 错误代码 : 1822. 添加外键约束失败。缺少约束索引

mysql - 跟踪 mysql 更改的最佳方法

sql-server - 为什么在启用时不应违反外键?

SQL - 创建 SQL 以加入列表

sql - 使用像 ltree、json 这样的 postgres 数据类型是否与 NoSQL 相关?

sql - 是否可以在 Postgres 中跟踪来自客户端的查询 PID?

mysql - 数据库新手 - 主键、外键、根本没有键?