In SQL Server, un'operazione "UPSERT" combina le azioni sia di un inserto che di un'istruzione di aggiornamento in una singola istruzione. Questa operazione inserisce una nuova riga in una tabella se quella riga non è presente. Altrimenti, aggiorna una riga già presente. Il vantaggio di eseguire un'operazione UPSert è che elimina la necessità di dichiarazioni di insert e aggiornamenti separati, semplificando il codice SQL e riducendo la probabilità di errori.
Creazione di una tabella
Creiamo una tabella nel server SQL su cui possiamo utilizzare per eseguire le operazioni UPSert.
Crea tabella [DBO].[Dipendente](Produzione:
Empid Nome Depid SalModi per eseguire l'operazione UpSert
Esistono diversi modi per eseguire un'operazione UPSert nel server SQL. In questo articolo, discuteremo i tre metodi comuni per eseguire un'operazione UPSert: l'uso della clausola esista, la funzione Rowcount e la dichiarazione di unione.
1. Usando la clausola esiste
Questo metodo prevede l'utilizzo di una sottoquery per verificare se la riga esiste già nella tabella prima di eseguire un'istruzione insert o aggiornamento. La clausola esista restituisce true se la sottocquery restituisce delle righe.
Inizia la transazioneProduzione:
Empid Nome Depid SalQui, il codice SQL utilizza il metodo esiste per eseguire un'operazione UPSert nel server SQL. Avvia una transazione e dichiara le variabili per contenere l'ID dipendente e i valori dei nomi. Il codice controlla se nella tabella esiste un record con l'ID dipendente fornito utilizzando la clausola esiste. Se esiste, aggiorna il nome del dipendente a un nuovo valore. Altrimenti, inserisce una nuova riga con l'ID e il nome del dipendente dato.
2. Utilizzando la funzione Rowcount
Questo metodo prevede prima l'esecuzione di un'istruzione di aggiornamento, seguita da un'istruzione Insert se l'istruzione di aggiornamento non ha aggiornato le righe.
Inizia la transazioneProduzione:
Empid Nome Depid SalQui, il codice SQL tenta di aggiornare il nome del dipendente con l'ID indicato nella tabella utilizzando i suggerimenti di aggiornamento e serializzabile che acquisiscono un blocco esclusivo sulla riga selezionata. Se l'aggiornamento non influisce sulle righe, il codice esegue un'istruzione Insert per inserire una nuova riga con l'ID dipendente e i valori dei nomi dei dipendenti indicati.
3. Utilizzando l'istruzione Merge
Un terzo modo per eseguire un'operazione UPSert nel server SQL è applicare l'istruzione unione. Questo metodo combina le azioni delle dichiarazioni di inserto e aggiornamento in un'unica istruzione, simile alla clausola esiste ma con caratteristiche più avanzate.
dichiarare @employeeid int = 18;Produzione:
Empid Nome Depid SalQuesta query SQL utilizza l'istruzione unione per unire i dati da una tabella di origine in una tabella di destinazione. Corrisponde alle righe tra le due tabelle usando la "colonna EMPID" e aggiorna la "colonna Nome" nella tabella di destinazione se si trova una corrispondenza. Se non c'è corrispondenza, inserisce una nuova riga.
Conclusione
Le operazioni UPSert sono un requisito comune nel server SQL. Esistono diversi modi per raggiungerli, incluso l'utilizzo del metodo esista, la funzione RowCount e l'istruzione unione. Possiamo scegliere l'approccio migliore in base al nostro requisito.