Bonjour,
Donc je commence avec un petit déclencheur simple qui malheureusement ne fonctionne pas :
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.Code:
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;
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 :
Et je voudrais obtenir ceci comme présentation :+-----------+----------------+ | 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 | +-----------+----------------+
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.+-----------+----------------+----------------+----------------+ | 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 | | | +-----------+----------------+----------------+----------------+
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.