Dans SQL Server, une opération «Upsert» combine les actions d'un insert et d'une instruction de mise à jour dans une seule instruction. Cette opération insère une nouvelle ligne dans une table si cette ligne n'est pas présente. Sinon, il met à jour une ligne déjà présente. L'avantage d'effectuer une opération UPSERT est qu'il élimine le besoin d'inserts et de mise à jour séparés, simplifiant votre code SQL et réduisant la probabilité d'erreurs.
Créer une table
Créons une table dans le serveur SQL que nous pouvons utiliser pour effectuer les opérations upsert sur.
Créer une table [dbo].[Employé](Sortir:
Nom empid Depide SalFaçons d'effectuer l'opération Upsert
Il existe plusieurs façons d'effectuer une opération UPSERT dans le serveur SQL. Dans cet article, nous discuterons des trois méthodes courantes pour effectuer une opération UPSERT: Utilisation de la clause existant, de la fonction RowCount et de l'instruction Merge.
1. Utilisation de la clause
Cette méthode consiste à utiliser une sous-requête pour vérifier si la ligne existe déjà dans le tableau avant d'effectuer une instruction insert ou mise à jour. La clause existant renvoie vrai si la sous-requête renvoie des lignes.
Commencer la transactionSortir:
Nom empid Depide SalIci, le code SQL utilise la méthode ESTISS pour effectuer une opération UPSERT dans le serveur SQL. Il initie une transaction et déclare les variables pour maintenir l'ID de l'employé et les valeurs de noms. Le code vérifie si un enregistrement avec l'ID d'employé donné existe dans le tableau à l'aide de la clause. S'il existe, il met à jour le nom de l'employé à une nouvelle valeur. Sinon, il insère une nouvelle ligne avec l'ID et le nom d'employé donné.
2. Utilisation de la fonction RowCount
Cette méthode implique d'abord l'exécution d'une instruction de mise à jour, suivie d'une instruction INSERT si l'instruction de mise à jour n'a pas mis à jour les lignes.
Commencer la transactionSortir:
Nom empid Depide SalIci, le code SQL tente de mettre à jour le nom de l'employé avec l'ID donné dans le tableau à l'aide de la mise à jour et des conseils sérialisables qui acquièrent un verrou exclusif sur la ligne sélectionnée. Si la mise à jour n'affecte aucune ligne, le code effectue une instruction INSERT pour insérer une nouvelle ligne avec l'ID de l'employé et les valeurs de nom d'employé donné.
3. En utilisant l'instruction Merge
Une troisième façon d'effectuer une opération UPSERT dans le serveur SQL est d'appliquer l'instruction Merge. Cette méthode combine les actions des instructions d'insertion et de mise à jour dans une seule déclaration, similaire à la clause existant mais avec des fonctionnalités plus avancées.
Declare @EmployeeId int = 18;Sortir:
Nom empid Depide SalCette requête SQL utilise l'instruction Merge pour fusionner les données d'un tableau source dans une table cible. Il correspond aux lignes entre les deux tables à l'aide de la «colonne Empid», et met à jour la «colonne de nom» dans la table cible si une correspondance est trouvée. S'il n'y a pas de correspondance, il insère une nouvelle ligne.
Conclusion
Les opérations upsert sont une exigence commune dans le serveur SQL. Il existe plusieurs façons de les réaliser, notamment en utilisant la méthode EXIST, la fonction RowCount et l'instruction Merge. Nous pouvons choisir la meilleure approche en fonction de notre exigence.