Exemples d'UPDATE

1. Effacer les dates de retour

Il s'agit d'effacer les dates de retour de tous les exemplaires disponibles en salle de lettres.

update EXEMPLAIRE
set DATE_RETOUR = null
where (FONDS = 7 or FONDS = 16)
and ETAT = 1
and DATE_RETOUR is not null;

Ne pas oublier : commit;

Pas d'index sur le champ DATE_RETOUR : donc le client Loris est instantanément à jour.

Note : on peut faire le commit; après plusieurs UPDATE.

2. Changer un fournisseur

update LINE_COMM
set FOURNISSEUR = 32
where UTIL_CREAT LIKE 'MAURER'
AND ETAT = 100 AND FOURNISSEUR = 10;

Modifie un fournisseur dans la table Ligne de commande. Ne pas oublier le commit; !

3. Un UPDATE utilisant un join

Je veux récupérer le numéro d'inventaire qui se trouve dans la table ABONNEMENT et le copier dans le champ T_ID1 de FASCICULE pour les fascicules liés aux abonnements qui ont un numéro d'inventaire.

update FASCICULE
set FASCICULE.T_ID1 =
(select ABONNEMENT.INVENTAIRE
from ABONNEMENT
where FASCICULE.ABONNEMENT = ABONNEMENT.DORIS_KEY);

Autre exemple :

update UNIMARC
set UNIMARC.UNIMARC26 = 3
where UNIMARC.DORIS_KEY in
(select EXEMPLAIRE.LIVRE from EXEMPLAIRE
where EXEMPLAIRE.BIBLIOTHEQUE = '7');

Je mets la valeur 3 dans UNIMARC26 pour les notices dont un exemplaire se trouve dans la bibliothèque 7.

4. Copier un champ dans un autre

update DROITS
set NOMBRE_NEW = NOMBRE_PRET;

Cette simple commande permet de dupliquer la valeur de NOMBRE_PRET dans NOMBRE_NEW (= nombre de nouveautés empruntables pour chaque catégorie de lecteur).

Autre exemple : je copie le NOM_MARITAL dans le champ NOM (en conservant la valeur de NOM, ce qui donne NOM_MARITAL - NOM) et j'efface NOM_MARITAL :

UPDATE LECTEUR
set NOM=NOM_MARITAL||' - '||NOM,NOM_MARITAL=NULL
WHERE NUMERO_CARTE LIKE '0000%'
AND SEXE=2
AND NOM_MARITAL IS NOT NULL;