[Racine des codes] [Page précédente]

UPSERT (MERGE) - update or insert-if-not-exists

/SQL/UPSERT (MERGE) - update or insert-if-not-exists.sql

MERGE INTO compteur_facture AS cofa
USING (SELECT 2, 20) AS myKey(facso_id, expt_id)
  ON myKey.facso_id = cofa.facso_id AND myKey.expt_id = cofa.expt_id -- un compteur par (facso_id, expt_id)
WHEN MATCHED THEN
  UPDATE SET cofa_compteur = cofa_compteur + 1 -- incrémente le compteur (/!\ si plusieur lignes matches, elles sont toutes traitées...)
WHEN NOT MATCHED THEN
  INSERT (facso_id, expt_id, cofa_compteur) VALUES(myKey.facso_id, myKey.expt_id, 1) -- insère/crée le nouveau compteur
OUTPUT INSERTED.cofa_compteur, $action;
;
[edit]