Skip to main content

Une nécessité simple:

combinant les informations d'identité de quelqu'un pour la table utilisateur.

penser très simplement, si cette personne existe, mise à jour; S'il / elle ne le fait pas, alors.


2 Types

De nombreux amis, écrivant un tel SQL, main dans la main. Rien n'est mis à jour et inséré.

Premier juge de cette personne, non dans le tableau:

Cependant, les expressions SQL peuvent être plus simples, laissez le personnage principal d'aujourd'hui: Fusionner

IF Exists(SELECT TOP 1 1 FROM User WHERE UserName = @var_UserName)BEIGN UPDATE User SET XXX = XXX WHERE UserName = @var_UserNameENDELSEBEGIN INSERT INTO User ( XXX,XXX) ) VALUES(xxx,xxx)END La déclaration de fusion effectue également la fonction de combinaison de mise à jour / insert.

SUR:

Utilisation (xxx) est UserUpdate sur: MERGE INTO User USING (xxx) AS UserUpdate on User.UserName = UserUpdate.UserName WHEN MATCHED THEN UPDATE SET UserName = UserUpdate.UserName WHEN NOT MATCHED THEN INSERT(XXX,XXX) VALUES(xxx,xxx) XXX indiquant les données préparées utilisées pour mettre à jour, peut être une commande de sélection ou un traitement de commande de la construction de prix (approprié pour SQL Server).

Ici, spécifiez les conditions appropriées

Joints:
Lorsque les joints sont remplis, appliquer les mises à jour des données

ne correspond pas:

lorsque la demande s'applique.Le joint n'est pas rempli, les données de déploiement sont neuves


Royaume de 3 étages


, ce n'est pas encore ici.

peut écrire des mises à jour / insérer la première classe comme une carte de base. Si le nombre de bases de données n'est pas grand, il n'y a aucun problème avec cela.

Mais mettre à jour / insérer dangereux.

Si l'utilisateur a été évalué, le nouvel utilisateur a été construit par d'autres personnes et un conflit s'est produit. Par conséquent, ajoutez les transactions de démarrage pour démarrer le contrôle des transactions, séparer les autres utilisateurs. C'est le deuxième royaume.
La fusion n'a pas besoin de cet examen. C'est un relevé complet de contrôle des transactions du niveau de déclaration.
Cependant, une forte fusion, et c'est encore plus mince. Surtout en fonctionnement consolidé, mis à jour des millions de lignes, tout en créant un grand nombre de journaux, a également ses serrures et ses bases de données et non sa belle.
Que dois-je faire? Changer le lot!

MERG Plus de 10000 données peuvent être résolues parfaitement.


C'est la troisième critique de la classe. pourquoi voulez-vous utiliser une unité sans mettre à jour / insérer? La raison est 2:
Fusionner une seule commande pour effectuer des contrôles Les transactions et la consolidation ont été une mise à jour légère: Ces exemples de consolidation, mais en fait, la consolidation peut déployer la consolidation du tableau, lorsque la capacité de données dans deux tables de grande taille, la mise à jour de combinaison / insertion crée deux requêtes de comparaison et deux mises à jour de journal, mais juste fusionné une fois.


Sujets

Catégories