Как сделать отдельно уникальным каждый столбец в postgresql? - PullRequest
0 голосов
/ 26 марта 2020

Я знаю, что мы можем применить первичный ключ к столбцу, чтобы обеспечить уникальность строки, и мы можем применить несколько первичных ключей и получить составной ключ.

Но в моем случае это не сработало. У меня есть userID и адрес электронной почты столбцы. И я хочу, чтобы они были уникальными одновременно. Когда я применил атрибут первичного ключа к обоим, в таблицу можно добавить человека с одинаковым адресом электронной почты, но с другим идентификатором пользователя. Таким образом, я полагаю, что составной ключ похож на комбинацию, когда при изменении идентификатора пользователя нет необходимости менять электронную почту.

Я использую модуль psycopg2 с python, и я могу сделать эту уникальность при регистрации пользователя, выполняя поиск в строках, если есть одно и то же электронное письмо, и прошу пользователя изменить электронное письмо на предмет уникальности. Но я хочу узнать, есть ли способ сделать такую ​​отдельную уникальность с postgresql / sql.

Заранее спасибо ...

Ответы [ 2 ]

2 голосов
/ 26 марта 2020

Не нужно указывать идентификатор! Просто сделайте это уникальным ограничением. Например, как это:

CREATE TABLE orders(
id integer PRIMARY KEY,
email VARCHAR(255) UNIQUE
)
0 голосов
/ 26 марта 2020

Этого можно добиться с помощью ограничения Уникальное . Вы можете использовать его, как показано ниже:

CREATE TABLE person (
   id serial PRIMARY KEY,
   first_name VARCHAR (50),
   last_name VARCHAR (50),
   email VARCHAR (50) UNIQUE
);

В случае первичного ключа вы не можете сохранять нулевые значения, но с уникальным вы можете иметь нулевое значение, если оно не дублируется в строках. Первичный ключ представляет собой комбинацию NOT NULL и Уникальное ограничение.

...