Usare l'istruzione MERGE in Oracle

Mattepuffo's logo
Usare l'istruzione MERGE in Oracle

Usare l'istruzione MERGE in Oracle

Una delle cose che più mi piacciono di MySQL / MariaDB è l'istruzione ON DUPLICATE KEY!

Esegue in automatico un sacco di controlli, levando quindi al programmatore l'onere di scrivere codice / controlli in più.

Ho scoperto che anche in Oracle c'è una instruzione simile: MERGE!

Supponiamo di avere una tabella (FSH_CIM_MODIFICA_ARTICOLI) con due campi:

  • NPAM che PRIMARY_KEY, e quindi campo con valori univoci
  • DATA_MOD, che è un campo data

Quando inseriamo un nuovo valore, vogliamo fare questo:

  • se l'NPAM già esiste, facciamo l'update della data
  • sennò inseriamo un nuovo record

Ecco un esempio (preso da un esempio reale):

    MERGE INTO FSH_CIM_MODIFICA_ARTICOLI TBL1
    USING FSH_CIM_MODIFICA_ARTICOLI TBL2 ON(TBL2.NPAM = '1096')
    WHEN MATCHED THEN UPDATE SET DATA_MOD = '16-NOV-2016'
    WHEN NOT MATCHED THEN INSERT(TBL1.NPAM, TBL1.DATA_MOD) VALUES('1097', '18-NOV-2016');

 Enjoy!


Condividi

Commentami!