【发布时间】:2021-02-18 18:21:59
【问题描述】:
我有一个键值表。
CREATE TABLE keyvalues (
key TEXT NOT NULL,
value TEXT
)
我想施加一个约束,如果一个键有一个 NULL 值的条目,它不能有任何其他条目。 我该怎么做?
澄清: 我想允许(“key1”,“value1”),(“key1”,“value2”)。但是如果我有 ("key2", NULL),我想不允许 ("key2", "value3")。
【问题讨论】:
-
嗯?键是
NOT NULL它不能有NULL值。您将展示一些(伪)代码来解释您想要实现的目标。 -
我的意思是一个看起来像(“key”,NULL)的条目。即,值字段为 NULL。我想允许(“key1”,“value1”),(“key1”,“value2”)。但是如果我有 ("key2", NULL),我不想允许 ("key2", "value3")。
-
由于PostgreSQL支持triggers,你可以探索
BEFORE INSERT。 -
如果您有一个键的值并尝试插入具有相同键和 NULL 值的行怎么办?
标签: sql postgresql exclusion-constraint