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!
database oracle merge
Commentami!