【发布时间】:2016-04-23 15:38:33
【问题描述】:
在我的 PostgreSQL 9.4 数据库中,我有一个表 fields,其中有一列 name 具有唯一值。
我正在创建一个具有类似结构的新表fields_new(此处不重要)和一个列name。我需要一种方法来限制 name 值插入到 fields_new 中不出现在 fields.name 中。
例如,如果fields.name 包含值 'color' 和 'length',我需要阻止 fields_new.name 包含 'color' 或 'length' 值。因此,换句话说,我需要提供两个表中的 name 列之间没有任何重复值。并且约束应该是双向的。
【问题讨论】:
-
请编辑您的问题并提供样本数据和可接受和不可接受的记录。
-
我不明白你为什么想要两张桌子。你不能扩展当前表来满足额外的属性吗?
-
我应该如何编辑问题?完整的表格结构无济于事,因为这个问题或多或少是纯粹的理论问题。
-
两张表,由于某种原因,我不能这样做。真正的db结构很复杂,第二张表是第一张表的非同步补充
-
您仍然需要更具体。如果在
fields中插入/更新了已经添加到fields_new的值(然后是合法的)怎么办?或者,在输入时限制新条目就足够了吗?这意味着在那之后的任何时候都可能发生违规行为。同样重要的是:您的 Postgres 版本?
标签: sql postgresql database-design constraints unique-constraint