MySQL Условная Вставка - PullRequest
87 голосов
/ 27 мая 2009

У меня трудности с формированием условной вставки

У меня есть x_table со столбцами (экземпляр, пользователь, элемент), где идентификатор экземпляра уникален. Я хочу вставить новую строку, только если у пользователя уже нет данного элемента.

Например, попытка вставить экземпляр = 919191 пользователь = 123 элемент = 456

Insert into x_table (instance, user, item) values (919191, 123, 456) 
    ONLY IF there are no rows where user=123 and item=456 

Любая помощь или руководство в правильном направлении будет высоко ценится.

Ответы [ 12 ]

0 голосов
/ 25 июля 2011

Небольшое изменение ответа Алекса, вы также можете просто сослаться на существующее значение столбца:

Insert into x_table (instance, user, item) values (919191, 123, 456) 
  ON DUPLICATE KEY UPDATE user=user
0 голосов
/ 27 мая 2009
Insert into x_table (instance, user, item) values (919191, 123, 456) 
    where ((select count(*) from x_table where user=123 and item=456) = 0);

Синтаксис может варьироваться в зависимости от вашей БД ...

...