Eu tenho uma consulta SQL onde desejo inserir várias linhas na consulta única. então eu usei algo como:
$sql = "INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29)";
mysql_query( $sql, $conn );
O problema é que, quando executo essa consulta, desejo verificar se uma UNIQUE
chave (que não é a PRIMARY KEY
), por exemplo 'name'
, acima, deve ser verificada e, se 'name'
já existe, a linha inteira correspondente deve ser atualizada caso contrário.
Por exemplo, no exemplo abaixo, se 'Katrina'
já estiver presente no banco de dados, a linha inteira, independentemente do número de campos, deve ser atualizada. Novamente, se 'Samia'
não estiver presente, a linha deve ser inserida.
Eu pensei em usar:
INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29) ON DUPLICATE KEY UPDATE
Aqui está a armadilha. Fiquei preso e confuso sobre como proceder. Eu tenho várias linhas para inserir / atualizar de cada vez. Por favor me dê uma direção. Obrigado.
fonte
INSERT INTO ... ON DUPLICATE KEY UPDATE funcionará apenas para MYSQL, não para SQL Server.
para SQL Server, a maneira de contornar isso é primeiro declarar uma tabela temporária, inserir valor nessa tabela temporária e usar MERGE
Como isso:
fonte
Você pode usar Substituir em vez de INSERIR ... NA DUPLICATE KEY UPDATE.
fonte