【发布时间】:2021-09-13 20:32:21
【问题描述】:
如何设置一个复合唯一约束,可以正确处理 sqlite 中的空值?这可能通过示例更好地表达:
CREATE TABLE people (
id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
suffix TEXT,
UNIQUE (first_name, last_name, suffix)
);
当一个带有后缀的人被输入不止一次时,约束会按预期工作。
-- Last insert is denied
INSERT INTO people (first_name, last_name, suffix)
VALUES
('Joe', 'Dirt', 'Sr'),
('Joe', 'Dirt', 'Jr'),
('Joe', 'Dirt', 'Sr');
但是,当一个没有后缀的人被多次插入时,唯一约束是不适应的。
-- Both are permitted
INSERT INTO people (first_name, last_name)
VALUES
('Chris', 'Farley'),
('Chris', 'Farley');
我了解 sqlite 将 null 值视为彼此独立,但有没有适当的方法来解决这个问题?
任何帮助将不胜感激。谢谢!
【问题讨论】:
标签: sql sqlite unique-constraint