У меня есть запрос SQL, где я хочу вставить несколько строк в одном запросе. поэтому я использовал что-то вроде:
$sql = "INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29)";
mysql_query( $sql, $conn );
Проблема в том, что когда я выполняю этот запрос, я хочу проверить, должен ли проверяться UNIQUE
ключ (который не является PRIMARY KEY
), например, 'name'
выше, и если такой 'name'
уже существует, соответствующая целая строка должна быть обновлена, вставлена в противном случае.
Например, в приведенном ниже примере, если 'Katrina'
он уже присутствует в базе данных, должна быть обновлена вся строка, независимо от количества полей. Опять же, если 'Samia'
нет, строка должна быть вставлена.
Я думал об использовании:
INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29) ON DUPLICATE KEY UPDATE
Вот ловушка. Я застрял и запутался в том, как поступить. У меня есть несколько строк для вставки / обновления одновременно. Пожалуйста, дайте мне направление. Спасибо.
источник
INSERT INTO ... ON DUPLICATE KEY UPDATE будет работать только для MYSQL, но не для SQL Server.
для SQL-сервера способ обойти это - сначала объявить временную таблицу, вставить значение в эту временную таблицу, а затем использовать MERGE
Как это:
источник
Вы можете использовать Replace вместо INSERT ... ON DUPLICATE KEY UPDATE.
источник