Как установить составное уникальное ограничение, которое может правильно обрабатывать нулевые значения в 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 рассматривает нулевые значения как независимые друг от друга, но есть ли правильный способ обойти это?
Будем очень признательны за любую помощь. Спасибо!