Многоуровневый первичный ключ? - PullRequest
0 голосов
/ 02 января 2019

У меня есть довольно простая таблица 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...