Cosa è upsert e come farlo in mysql

Cosa è upsert e come farlo in mysql
I database sono diventati una parte essenziale della società di oggi. I database ci aiutano a archiviare i nostri dati in modo più efficiente e ridurre gli errori. Da un piccolo negozio a un'azienda multinazionale, tutti utilizzano database per archiviare le loro informazioni. Puoi sostenere che le informazioni possono essere archiviate in un foglio di calcolo in modo organizzato.

Mentre questo è tecnicamente corretto ma praticamente, questo è molto disastroso. Il motivo è che man mano che i dati crescono, vengono memorizzati molti licenziamenti e dati inutili. Molte volte, i dati possono persino in conflitto. Una cosa del genere può essere molto dannosa per qualsiasi azienda. La soluzione sta archiviando i dati in un database.

Il sistema di gestione del database o DBMS, in breve, è un software che consente agli utenti di gestire il proprio database. Quando si tratta di enormi blocchi di dati, viene utilizzato un database. Il sistema di gestione del database fornisce molte funzionalità critiche. UpSert è una di queste caratteristiche. Upsert, come nome, indica una combinazione di due parole aggiornamenti e inserisci. Le prime due lettere provengono dall'aggiornamento mentre il resto quattro provengono da Insert. UpSert consente all'autore del linguaggio di manipolazione dei dati (DML) di inserire una nuova riga o aggiornare una riga esistente. UpSert è un'operazione atomica che significa che si tratta di un'operazione a passo singolo.

Mysql, per impostazione predefinita, fornisce l'opzione di aggiornamento della chiave duplicata da inserire, che esegue questa attività. Tuttavia, altre dichiarazioni possono essere utilizzate per completare questa attività. Questi includono dichiarazioni come ignore, sostituire o inserire.

Puoi eseguire UpSert usando MySQL in tre modi.

  1. UpSert usando insert ignora
  2. UpSert usando sostituire
  3. UpSert utilizzando su un aggiornamento della chiave duplicata

Prima di muoverci oltre, per questo esempio userò il mio database e lavoreremo in MySQL Workbench. Attualmente sto usando la versione 8.0 Edizione comunitaria. Il nome del database utilizzato per questo tutorial è Sakila. Sakila è un database contenente sedici tabelle. Ci concentreremo sulla tabella Store in questo database. Questa tabella contiene quattro attributi e due righe. Attributi Store_id è la chiave principale.

Vediamo come i modi precedenti influenzano questi dati.

UpSert usando insert ignora

INSERT IGNORE CAUSA MYSQL IGNORE IL TUO ERRIRI DI ESEGUIZIONE Quando si esegue un inserto. Quindi, se stai inserendo un nuovo record con la stessa chiave principale di uno dei record già nella tabella, otterrai un errore. Tuttavia, se si esegue questa azione usando Insert Ignore, l'errore risultante verrà soppresso.

Qui proviamo ad aggiungere il nuovo record utilizzando l'istruzione MySQL STANDARD MYSQL.

Riceviamo il seguente errore.

Ma quando eseguiamo la stessa funzione usando Insert Ignore, non riceviamo alcun errore. Invece, riceviamo il seguente avvertimento e MySQL ignora questa istruzione Insert. Questo metodo è vantaggioso quando si aggiungono enormi quantità di nuovi record alla tabella. Quindi, se ci sono alcuni duplicati, MySQL li ignorerà e aggiungerà i record rimanenti alla tabella.

UpSert usando sostituire:

In alcune circostanze, potresti voler aggiornare i record esistenti per tenerli aggiornati. L'uso di un inserto standard qui ti darà una voce duplicata per l'errore della chiave primaria. In questa situazione, puoi usare Sostituisci per eseguire il tuo compito. Quando si utilizzano sostituire due nei seguenti eventi.

C'è un vecchio record che corrisponde a questo nuovo record. In questo caso, sostituire funziona come un'istruzione di insert standard e inserisce il nuovo record nella tabella. Il secondo caso è che alcuni record precedenti corrispondono al nuovo record da aggiungere. Qui sostituire aggiorna il record esistente.

L'aggiornamento viene eseguito in due passaggi. Nel primo passaggio, il record esistente viene eliminato. Quindi il record appena aggiornato viene aggiunto proprio come un inserto standard. Quindi svolge due funzioni standard, elimina e inserisci. Nel nostro caso, abbiamo sostituito la prima riga con dati appena aggiornati.

Nell'immagine seguente, puoi vedere come il messaggio dice "2 righe interessate" mentre abbiamo sostituito o aggiornato i valori di una singola riga. Durante questa azione, il primo record è stato eliminato e poi il nuovo record è stato inserito. Quindi il messaggio dice: “2 righe interessate."

UpSert usando Insert ... sull'aggiornamento della chiave duplicata:

Finora abbiamo esaminato due comandi UpSert. Potresti aver notato che ogni metodo aveva la sua carenza o limitazioni se puoi. Il comando Ignore sebbene ignorato la voce duplicata, ma non stava aggiornando alcun record. Il comando di sostituzione, anche se si stava aggiornando, tecnicamente non si stava aggiornando. Stava eliminando e quindi inserendo la riga aggiornata.

Un'opzione più popolare ed efficace rispetto ai primi due è il metodo di aggiornamento della chiave duplicata. A differenza di sostituzione, che è un metodo distruttivo, questo metodo non è distruttivo, il che significa che non lascia cadere le righe duplicate prima; Invece, li aggiorna direttamente. Il primo può causare molti problemi o errori, essendo un metodo distruttivo. A seconda dei vincoli della chiave esterna, può causare un errore o in uno scenario peggiore, se la chiave esterna è impostata su cascata, può eliminare le righe dall'altra tabella collegata. Questo può essere molto devastante. Quindi, usiamo questo metodo non distruttivo in quanto è molto più sicuro.

Modificheremo i record aggiornati utilizzando sostituire i loro valori originali. Questa volta utilizzeremo il metodo di aggiornamento della chiave Duplicate.

Notare come abbiamo usato le variabili. Questi possono essere utili perché non è necessario aggiungere valori nell'istruzione, ancora e ancora, riducendo così le possibilità di errore. Di seguito è riportata la tabella aggiornata. Per differenziarlo dalla tabella originale, abbiamo modificato l'attributo Last_Update.

Conclusione:

Qui abbiamo appreso che UpSert è una combinazione di due parole aggiorna e inserisci. Funziona sul seguente principio che, se la nuova riga non ha duplicati lo inserisce e se ha i duplicati eseguono la funzione appropriata secondo l'affermazione. Esistono tre metodi per eseguire UpSert. Ogni metodo ha alcuni limiti. Il più popolare è il metodo di aggiornamento della chiave duplicata. Ma a seconda delle tue esigenze, chiunque dei metodi di cui sopra può essere più utile per te. Spero che questo tutorial ti sia utile.