Таблица в Mysql с уникальными полями
У меня есть таблица в Mysql со следующими полями:
CREATE TABLE table_1(
camp_1 boolean,
tree varchar(50),
name varchar(50),
serv varchar(50),
number varchar(50),
PRIMARY KEY (camp_1, tree, name)
);
тогда у меня может быть что-то подобное:
select* from table_1
aa, bb, cc, null, 123
dd, ee, ff, null, 512
Проблема в том, что мне нужно, чтобы когда serv был нулевым, тогда мой первичный ключ был бы похож (или мне нужны три уникальных значения): camp_1, tree, name
И если serv не null, мне нужно вставить что-то вроде:
select* from table_1
aa, bb, cc, ddd, 123
aa, bb, cc, ert, 123
dd, ee, ff, null, 512
Таким образом, если serv не равен null, я могу иметь camp_1, tree, name два или более раз (aa, bb, cc появляются 2 раза) с разными значениями, но если serv не равен null, я не могу иметь camp_1, tree, name (дд, е, фф только 1 раз) с более чем 1 значением.
Я пытаюсь с индексом, но он не найден, потому что я не могу вставить ноль в мой первичный ключ.
Что-то может мне помочь?