2014-11-10 1 views
0

Я реализую базу данных MySQL, которая использует структуру первичного ключа x/y/z, где x и y являются внешними ключами, а z является локальным ключом.UPDATE в дублированных столбцах, когда три дубликаты, но не только один

Мое затруднение заключается в том, что я не хочу, чтобы дублирующий случай активировался, если все три не дублируются. Предполагая, что у меня есть эта структура таблицы.

X | Y | Z | Description 
    34 | F4 | 25 | This is a row 
    34 | F4 | 26 | This is also row 
    C6 | 71 | 9A | This is a row too 

Если бы я хотел, чтобы вставить

x=34,y=F5,z=25,description=This is a row as well 

было бы вставить новую строку, потому что, хотя х и г являются дубликатами, у нет. Однако, если я послал

x=34,y=F4,z=25,description=This is the first row 

следует обновить описание записей.

Могу ли я сделать это с помощью INSERT INTO ... ON DUPLICATE KEY или что-то более сложное, что нужно сделать?

ответ

3

Конечно, вы можете. Вам просто нужно объявить (x,y,z) в качестве первичного или уникального ключа:

create unique index idx_table_x_y_z on table(x, y, z) 

Если триплет уже существует в таблице, то вы можете использовать on duplicate key insert.

+0

Не уникально ли заставить его разрешить одно из значений в любой строке? Мне нужно, чтобы все три были уникальными, но только вместе. – TheBat

+0

Теперь я вижу, что они были уникальными индивидуально не все вместе. – TheBat

 Смежные вопросы

  • Нет связанных вопросов^_^