ОБНОВЛЕНИЕ записи, если присутствует;еще ВСТАВИТЬ - PullRequest
3 голосов
/ 26 сентября 2010

Я хочу обновить запись, которая может присутствовать или не присутствовать в таблице.Если его нет в базе данных, он будет вставлен.

Для предотвращения выбора я сначала использую оператор UPDATE и проверяю affected_rows > 0, если нет, то я вставляю эту запись в таблицу.

Мне было интересно, есть ли лучший способ сделать это?

Ответы [ 2 ]

5 голосов
/ 26 сентября 2010

Вы можете использовать синтаксис INSERT ... ON DUPLICATE KEY UPDATE:

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

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


Разница между этим и REPLACE (ответ Femaref) заключается в том, что REPLACE будет удаляет старую строку, а затем вставляет новую строку, если ключ дублируется, при этом обновляется существующая строка.

4 голосов
/ 26 сентября 2010

Используйте Replace вместо Insert.

http://dev.mysql.com/doc/refman/5.0/en/replace.html

...