У меня есть довольно простая таблица users
следующим образом:
CREATE TABLE users (
host VARCHAR NOT NULL,
username VARCHAR,
password VARCHAR NOT NULL,
PRIMARY KEY (host, username)
);
Пароль, как правило, не имеет значения, если речь идет о PK.Тем не менее, username
может иногда иметь значение NULL (отсюда и отсутствие NOT NULL
на нем), так как указание конкретного хоста отличает пользователя от пароля только.В этом случае я бы хотел, чтобы пароль также был частью PK.
Моя первоначальная попытка была
PRIMARY KEY (host, coalesce(username, password))
Но, очевидно, это неверный синтаксис, по крайней мере, в SQLite3.
Есть ли способ, которым я могу достичь этого, используя чистый SQL?