MySQL « INSERT or UPDATE

Задача такова, что необходимо обновить старую запись, если она существует и соответствует определённым правилам, если же такой записи нет или правила не выполняются, то создать новую запись...

Можно ли такое сделать на SQL и без процедур.

1 ответов


http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

UPDATE table SET c=c+1 WHERE a=1;
 
И это необязательно на условие на первичный ключ. Будет отрабатывать и на других уникальных ключах.

В общем случае - нельзя. В частности - как повезет. Ищите в гугле по запросу "upsert".