Table des matières
Utilisation d'insert ... sur le conflit (PostgreSQL)
Utilisation de l'insert ... sur la mise à jour des clés en double (MySQL)
Utilisation de Merge (SQL Server, Oracle, SQLite 3.24)
Gérer les contraintes uniques
Maison base de données SQL Comment effectuer un upsert (insérer ou mettre à jour) dans SQL?

Comment effectuer un upsert (insérer ou mettre à jour) dans SQL?

Sep 23, 2025 am 04:30 AM
sql Upsert

PostgreSQL utilise l'insert ... sur les conflits, MySQL utilise l'insert ... sur la mise à jour de la clé en double, et SQL Server / Oracle / SQLite Use Merge pour Upserts; Tous nécessitent une contrainte unique pour détecter les doublons et assurer un comportement d'insert ou de mise à jour correct.

Comment effectuer un upsert (insérer ou mettre à jour) dans SQL?

La réalisation d'un upsert (insérer ou une mise à jour) dans SQL dépend du système de base de données que vous utilisez. L'objectif est d'insérer une nouvelle ligne si elle n'existe pas, ou de la mettre à jour si elle le fait - en fonction d'une contrainte unique comme une clé primaire ou un index unique. Vous trouverez ci-dessous des approches courantes pour les principales bases de données.

Utilisation d'insert ... sur le conflit (PostgreSQL)

PostgreSQL soutient la clause de conflit sur les usserts de la gestion des usserts.

Insérer dans les utilisateurs (ID, nom, e-mail)
VALEURS (1, «John Doe», «John@example.com»)
Sur les conflits (id) 
Do update set name = exclud.name, email = exclud.email;

Cela essaie d'insérer la ligne. Si un conflit se produit sur l' ID , il met à jour la ligne existante avec des valeurs à partir des données entrantes ( exclue fait référence à la nouvelle ligne proposée).

Utilisation de l'insert ... sur la mise à jour des clés en double (MySQL)

MySQL utilise sur la mise à jour des clés en double pour le comportement UPSERT.

Insérer dans les utilisateurs (ID, nom, e-mail)
VALEURS (1, «John Doe», «John@example.com»)
Sur la mise à jour de la clé en double 
name = valeurs (name), email = valeurs (e-mail);

Si une clé en double est trouvée (par exemple, sur ID ), il met à jour les champs spécifiés. Valeurs () récupère la valeur qui aurait été insérée.

Utilisation de Merge (SQL Server, Oracle, SQLite 3.24)

L'instruction Merge est un moyen standard d'effectuer des upserts dans plusieurs bases de données.

Fusionner les utilisateurs comme cible
Utilisation (sélectionnez 1 comme identifiant, «John Doe» comme nom, «John@example.com» comme e-mail) comme source
Sur (cible.id = source.id)
Quand il apparié alors
    Mise à jour set name = source.name, email = source.email
Lorsqu'il n'est pas apparié alors
    Insérer (ID, nom, e-mail)
    Valeurs (source.id, source.name, source.email);

Cela vérifie si une ligne correspondante existe. Si oui, il se met à jour; Sinon, il insère.

Gérer les contraintes uniques

Toutes les méthodes UPSERT reposent sur un index ou une clé primaire unique . Assurez-vous que votre table en a une définie sur la ou les colonnes utilisées pour détecter les doublons (comme ID ou e-mail ).

Pour créer une contrainte unique:

Alter Table Users Ajouter CONSTRAINT UK_EMAIL UNIQUE (EMAIL);

Choisissez la méthode qui correspond à votre base de données. PostgreSQL et MySQL offrent une syntaxe concise, tandis que la fusion est plus verbeuse mais largement prise en charge. Testez toujours avec vos données pour éviter les écrasements involontaires.

Fondamentalement, faites correspondre la syntaxe à votre moteur de base de données et assurez-vous qu'une clé unique est en place.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment comparer une colonne à plusieurs valeurs dans SQL? Comment comparer une colonne à plusieurs valeurs dans SQL? Sep 16, 2025 am 02:12 AM

Utilisez l'opérateur In pour comparer efficacement les colonnes avec plusieurs valeurs, telles que Select * FrowemployeeswheredPartment_idin (1,2,3); Utilisez Notin si plusieurs valeurs sont exclues, mais faites attention aux NULL affectant le résultat.

Comment utiliser la fonction sonore pour les recherches phonétiques dans SQL? Comment utiliser la fonction sonore pour les recherches phonétiques dans SQL? Sep 21, 2025 am 01:54 AM

La fonction SoundEx convertit le texte en un code à quatre caractères représentant la prononciation, ajoute trois chiffres à la première lettre, ignore les voyelles et les lettres spécifiques, et cartographie des consonnes avec des prononciations similaires au même nombre, réalisant la recherche basée sur la prononciation. Par exemple, Smith et Smythe génèrent tous deux S530, et les noms avec des prononciations similaires peuvent être trouvés via WhereSoundEx (Last_name) = SoundEx ('Smith'). Combiné avec la fonction de différence, il peut renvoyer un score de similitude de 0 à 4, filtrez les résultats de la projection de la prononciation, ce qui convient au traitement des différences d'orthographe, mais a un effet limité sur les noms non anglophones, et l'optimisation des performances doit être accordée à l'attention.

Quelle est la différence entre une sous-requête et un CTE dans SQL? Quelle est la différence entre une sous-requête et un CTE dans SQL? Sep 16, 2025 am 07:47 AM

Les sous-requêtes sont des requêtes imbriquées dans une autre requête. Ils conviennent à des calculs uniques simples et peuvent être situés dans certains, à partir des clauses ou où les clauses; 2. CTE est défini avec des clauses pour améliorer la lisibilité des requêtes complexes et de la récursivité de soutien et de multiples références; 3. Les sous-requêtes conviennent à un usage unique, et le CTE convient plus aux scénarios où une structure, une réutilisation ou une récursivité claires est requise.

Comment ajouter un commentaire à une table ou à une colonne dans SQL? Comment ajouter un commentaire à une table ou à une colonne dans SQL? Sep 21, 2025 am 05:22 AM

USECOMmentOnColumnoralterTablewithCommentToDocumentTables etColumnSinsQL; SyntaxVariesByDBMS - PostgreSQLandoracleUseCommenton, MySQLUSESCommentIncreate / Alterstatements, andcomementsCanBeviewEdViaSystemtslienformations_schema, ButsqliTelackSSUPPort.

Comment trouver des enregistrements orphelins dans une table SQL? Comment trouver des enregistrements orphelins dans une table SQL? Sep 17, 2025 am 04:51 AM

ToFindorphaneDrecords, usealeftjoinornotexiststoidentifyChildRecordswithoutmatchingPaRentRecords.forexample, selecto.fromordersoleftjoinoistomerscono.customer_id = c.Customer_idwherec.Customer_idisnullredSordersLinkEdtonon-ExistCustomerSers.AltervatIverv.

Comment effectuer une jointure non équivalente dans SQL? Comment effectuer une jointure non équivalente dans SQL? Sep 16, 2025 am 07:37 AM

Anon-equijoinusses composé des opérateurs comme entre,> =, ou! = TomatchRowsBetWeentables.2.

Comment obtenir le dernier jour du mois pour une date donnée dans SQL? Comment obtenir le dernier jour du mois pour une date donnée dans SQL? Sep 18, 2025 am 12:57 AM

Utilisez la fonction Last_day () (MySQL, Oracle) pour obtenir directement le dernier jour du mois où la date spécifiée est, comme Last_day ('2023-10-15') pour retourner 2023-10-31; 2. SqlServer utilise la fonction eomonth () pour atteindre la même fonction; 3. PostgreSQL calcule la fin du mois via date_trunc et intervalle; 4. Sqlite utilise la fonction de date pour combiner «startofmonth», «1 mois» et «-1day» pour obtenir les résultats.

Comment mettre à jour les données dans un tableau de SQL Comment mettre à jour les données dans un tableau de SQL Sep 18, 2025 am 06:04 AM

Pour mettre à jour les données dans la table SQL, l'instruction de mise à jour est requise. La syntaxe de base est: mise à jour du nom de nom de la table Colonne 1 = valeur 1, colonne 2 = valeur 2 ... où les conditions; 1. Lors de la mise à jour d'une seule ligne, spécifiez un identifiant unique, comme la clé principale; 2. Lors de la mise à jour de plusieurs colonnes, répertoriez plusieurs colonnes et valeurs dans la clause SET; 3. Lors de la mise à jour de plusieurs lignes, plusieurs enregistrements correspondant aux conditions où les conditions seront mises à jour en même temps; 4. Si la clause où est omise, toutes les lignes seront mises à jour, alors faites attention à fonctionner; 5. Il est recommandé d'utiliser les opérations de mise à jour d'emballage des transactions pour revenir en arrière lorsqu'une erreur se produit; De plus, vous devez toujours utiliser SELECT pour tester les conditions, sauvegarder des données importantes et utiliser la limite dans les bases de données prises en charge pour limiter le nombre de lignes à mettre à jour.

See all articles