我想找到一种方法在我的数据库中存储一个主题的多个地址,每个主题只有一个默认地址。
长话短说,假设我们有一张桌子:
CREATE TABLE test
(
id integer NOT NULL,
active boolean NOT NULL,
CONSTRAINT pk_id PRIMARY KEY (id)
)
对于表中的每个 id,最多只能有 1 个真正的活动值。
我怎么能做到这一点?
谢谢。
我想找到一种方法在我的数据库中存储一个主题的多个地址,每个主题只有一个默认地址。
长话短说,假设我们有一张桌子:
CREATE TABLE test
(
id integer NOT NULL,
active boolean NOT NULL,
CONSTRAINT pk_id PRIMARY KEY (id)
)
对于表中的每个 id,最多只能有 1 个真正的活动值。
我怎么能做到这一点?
谢谢。
在这个问题的情况下,不需要如前所述。
但仅供参考,您可以将约束设置为 2 个或更多(非主键)具有不同类型的列。例如:
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (integer_column, boolean_column);
有关详细信息,请参阅 Postgres 文档的Constraints,“唯一约束”部分。去引用:
如果唯一约束引用一组列,则列以逗号分隔…</p>
这指定指定列中的值组合在整个表中是唯一的,尽管任何一列不必是(并且通常不是)唯一的。
注意: 部分索引设置建立在表子集上的索引,其用途完全不同。