微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以将FOREIGN KEY引用到Postgresql v13中的分区表吗?

如何解决我可以将FOREIGN KEY引用到Postgresql v13中的分区表吗?

我正在尝试在2个分区表之间添加外键,这给了我错误(没有唯一的约束匹配给定表“ user”的给定键) 我使用的是postgresql v13,pgAdmin 4.26。 分区表到普通表外键的工作原理,普通表到分区表的错误与上述相同。当我阅读v13文档时,对此没有任何限制。谁能帮我吗?

java.util.TimeZone.getTimeZone("Europe/Berlin")

解决方法

您不能对id具有唯一约束(每个主键或唯一约束都必须包含value),因此您也不能在外键中引用该列。

具有外键约束的唯一解决方案是将value添加到test并将其包括在外键定义中。

没有解决方法。

顺便说一句,您永远不应该有一个名为user的表,因为它是保留的SQL关键字。

,

大概是您打算的:

CREATE TABLE users (
     user_id int generated always as identity primary key,value varchar,) ;

CREATE TABLE tests (
     test_id int generated always as identity,user_id integer,PRIMARY KEY (test_id,user_id)
     FOREIGN KEY (user_id) REFERENCES user(user_id)
) ;

注意:

  • 我删除了分区逻辑。它似乎并不是特别有用,并且会干扰您的表定义。分区键必须是主键的一部分。
  • 我将主键更改为在第一张表中只有一列。 user_id是唯一的,因此不需要复合主键。
  • 我将主键的名称从id更改为包括表名。这样,大多数外键引用将具有与主键相同的名称。
  • 我将表的名称复数。这有助于避免与SQL关键字和保留字冲突。另外,这很有意义,因为表包含多个实体。
  • 我将serial更改为generated always as identity。现在建议将其用于Postgres。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。