Допустим, у меня есть таблица MySQL, которая содержит три столбца: id
, a
и b
, а столбец с именем id
является полем AUTO INCREMENT
. Если я передам MySQL следующий запрос, он будет работать нормально:
REPLACE INTO `table` (`id`, `a`, `b`) VALUES (1, 'A', 'B')
Но если я пропущу поле id
, оно больше не будет работать, что и ожидается.
Я хочу знать, есть ли способ ignore
некоторых полей в REPLACE
запросе. Таким образом, приведенный выше запрос может быть примерно таким:
REPLACE INTO `table` (`a`, `b`) VALUES ('A', 'B')
Зачем мне это нужно?
Иногда мне нужно проверить базу данных с помощью запроса SELECT
, чтобы увидеть, существует ли строка или нет. Если он существует, мне нужно UPDATE
существующую строку, иначе мне нужно INSERT
новую строку. Мне интересно, смогу ли я добиться аналогичного результата (но не такого же) с помощью одного запроса REPLACE
.
Почему не может быть тот же результат? Просто потому, что REPLACE
будет DELETE
существующей строки и INSERT
новой строки, которая потеряет текущую primary key
и увеличит автоматически увеличивающиеся значения. Напротив, в запросе UPDATE
поля primary key
и AI
останутся нетронутыми.
MySQL ЗАМЕНИТЬ.
REPLACE
? - person Mahdi   schedule 05.03.2013primary key
. - person SparKot   schedule 05.03.20131,A,A
, должна быть заменена на2,A,B
. Я думаю, это не так уж и запутанно, не так ли? - person Mahdi   schedule 05.03.2013those row is just a sample
? - person Mahdi   schedule 05.03.2013table
(a
,b
) VALUES ('A',' Б') запрос. каков ваш ожидаемый результат? - person Fathah Rehman P   schedule 05.03.2013