J'ai une requête SQL où je veux insérer plusieurs lignes dans une seule requête. j'ai donc utilisé quelque chose comme:
$sql = "INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29)";
mysql_query( $sql, $conn );
Le problème est que lorsque j'exécute cette requête, je veux vérifier si une UNIQUE
clé (qui n'est pas la PRIMARY KEY
), par exemple 'name'
ci-dessus, doit être vérifiée et si une telle 'name'
existe déjà, la ligne entière correspondante doit être mise à jour sinon insérée.
Par exemple, dans l'exemple ci-dessous, si 'Katrina'
est déjà présent dans la base de données, la ligne entière, quel que soit le nombre de champs, doit être mise à jour. Encore une fois s'il 'Samia'
n'est pas présent, la ligne doit être insérée.
J'ai pensé à utiliser:
INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29) ON DUPLICATE KEY UPDATE
Voici le piège. Je suis resté coincé et confus sur la façon de procéder. J'ai plusieurs lignes à insérer / mettre à jour à la fois. Veuillez me donner une direction. Merci.
la source
INSERT INTO ... ON DUPLICATE KEY UPDATE ne fonctionnera que pour MYSQL, pas pour SQL Server.
pour SQL Server, la façon de contourner ce problème consiste à déclarer d'abord une table temporaire, à insérer une valeur dans cette table temporaire, puis à utiliser MERGE
Comme ça:
la source
Vous pouvez utiliser Remplacer au lieu de INSÉRER ... SUR LA MISE À JOUR DE LA CLÉ DUPLICATE.
la source