Bonjour,
Donc je commence avec un petit déclencheur simple qui malheureusement ne fonctionne pas :
1 2 3 4 5 6 7 8
| CREATE OR REPLACE TRIGGER modification_nb_exemplaire
AFTER INSERT ON livre FOR EACH ROW
BEGIN
IF :new.nombre_exemplaire < 0 OR :new.nombre_exemplaire > 0 THEN
UPDATE livre SET nombre_exemplaire = 0
WHERE no_livre = :new.no_livre;
END IF;
END; |
Le but de cette requête étant de corrigé l'insertion d'un champ de livre dont le nombre d'exemplaire est supérieur à 0.Auquel cas la donnée est forcé à 0 par le déclencheur,sinon tout est beau.
Voici le code d'erreur : ORA-04091: la table LIVRE est en mutation ; le déclencheur ou la fonction ne peut la voir.J'imagine que c'est du au fait que la table est en cours de modification et n'a pas fini sa transaction mais j'ai hélas tout de même besoin de la modifier.
Mon deuxième problème :
J'ai la structure de table suivante appeler client :
+-----------+----------------+
| client | numero_tel |
+-----------+----------------+
| Gertrude | (254) 358-5865 |
| Gertrude | (450) 388-5765 |
| Getrude | (514) 365-9999 |
| Bob | (111) 111-1111 |
| Bob | (222) 222-2222 |
| Oncle sam | (333) 333-3333 |
+-----------+----------------+
Et je voudrais obtenir ceci comme présentation :
+-----------+----------------+----------------+----------------+
| client | numero_tel1 | numero_tel2 | numero_tel3 |
+-----------+----------------+----------------+----------------+
| Gertrude | (254) 358-5865 | (450) 388-5765 | (514) 365-9999 |
| Bob | (111) 111-1111 | (222) 222-2222 | |
| Oncle sam | (333) 333-3333 | | |
+-----------+----------------+----------------+----------------+
Comment opère t-on cette magie ? J'ai consulter plusieurs sites en lignes qui traitait comment transformer des ''row en column'' mais sans grand succès,tout ceci m'a sembler assez complexe.
Bien évidemment,le nombre d'argument est fixe et connue à l'avance.Je vais laisser tomber le dynamique pour le moment.Dans ce cas précis c'est 3.
Je précise que j'utilise oracle 10g comme SGBD.
Voila,merci d'avance.
Partager