создать уникальный индекс несколько столбцов с одним значением столбца равно нулю - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть таблица users со следующими столбцами и атрибутами

users (
  id int(11), 
  ssn varchar(100), 
  foreigner tinyint(1) default 0
)   

значения иностранца 0 и 1 по умолчанию 0 как я могу создать уникальный индекс для столбца ssn, когда проверено значение иностранца равно 0.

id     ssn    foreigner
1       55         0     true 
2       60         1     true
3       60         1     true
----------------------------------
4       55         0     false
----------------------------------
5       77         0     true 

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете сделать это без триггера в MySQL, используя самые последние версии MySQL.

create table users (
    id int(11),
    ssn varchar(100),
    foreigner tinyint(1) default 0,
    foreigner_ssn tinyint generated always as (case when foreigner = 0 then ssn end) store unique
);

Это создает новый сгенерированный столбец. Уникальные индексы MySQL для повторения NULL значений, поэтому условие действительно только на foreigner = 0.

Вы могли бы упростить это, просто указав ssn равным NULL при foreigner = 0 и объявив его unique.

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