Дополнительно
Вставьте в таблицу MySQL или обновите, если она существует
Я хочу добавить строку в таблицу базы данных, но если существует строка с тем же уникальным ключом, я хочу обновить строку.
Например,
insert into table (id, name, age) values(1, "A", 19)
Допустим, уникальный ключ - id
, а в моей базе данных есть строка с id = 1
. В этом случае я хочу обновить эту строку этими значениями. Обычно это дает ошибку. Если я использую insert IGNORE
, он проигнорирует ошибку, но все равно не будет обновляться.
817
11
Используйте
INSERT ... НА ОБЪЕКТЕ КЛЮЧЕВОГО ОБНОВЛЕНИЯ
КВАРИЙ:
Проверьте REPLACE
http://dev.mysql.com/doc/refman/5.0/en/replace.html
При использовании пакетной вставки используйте следующий синтаксис:
Попробуйте это:
Надеюсь, это поможет.
Попробуй это:
ВСТАВИТЬ В таблицу (id, name, age) ЗНАЧЕНИЯ ('1', 'Мухаммед', '21') НА ОБЪЕКТЕ КЛЮЧЕВОГО ОБНОВЛЕНИЯ name = 'Мухаммед', age = '21'
Запись: Здесь, если id является первичным ключом, то после первой вставки с
id = '1'
каждый раз, когда попытка вставитьid = '1'
, будет обновляться имя и возраст, а предыдущее имя возраст изменится.Все эти решения будут работать по вашему вопросу.
Если вы хотите узнать подробности относительно этого утверждения посетите эту ссылку
При использовании SQLite:
При условии, что
id
является основным ключом. Или он просто вставляет другой ряд. См. INSERT (SQLite).Просто потому, что я искал это решение, но для обновления из другой идентично структурированной таблицы (в моем случае веб-сайт тестирует DB для работы с DB):
Как упоминалось в другом месте, только столбцы, которые вы хотите обновить, должны быть включены после
ON DUPLICATE KEY UPDATE
.Нет необходимости перечислять столбцы в
INSERT
илиSELECT
, хотя я согласен, что это, вероятно, лучшая практика.В моем случае я создал запросы ниже, но в первом запросе, если
id
1 уже существует и возраст уже существует, после этого, если вы создадите первый запрос безage
, значениеage
будет равно noneчтобы избежать вышеупомянутой проблемы, создайте запрос, как показано ниже
пусть это поможет тебе ...
В случае, если вы хотите сохранить старое поле (например, имя). Запрос будет:
Также не забудьте по поводу уникального ограничения ключа.