Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2007, 15h47   #1
Membre Expert
 
Avatar de Lung
 
Analyste-programmeur
Inscription : mai 2002
Messages : 2 046
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Yonne (Bourgogne)

Informations professionnelles :
Activité : Analyste-programmeur
Secteur : Industrie

Informations forums :
Inscription : mai 2002
Messages : 2 046
Points : 2 046
Points : 2 046
Par défaut [10g] Trigger before insert

Dans une table, je souhaite renseigner la valeur de deux de ses champs, au moment d'un insert.
J'ai donc pensé à faire un trigger sur le after insert, et faire un update :
Erreur --> table mutante (http://sgbd.developpez.com/oracle/ora-04091/).

J'ai pris le problème dans l'autre sens, et j'ai cherché à utiliser le before insert :
Code :
1
2
3
4
5
6
7
CREATE OR REPLACE TRIGGER CALCULPR.FORMAT_PRODUIT_ENTETE_PIECE before INSERT ON CALCULPR.ENTETE_PIECE
FOR each row when ((upper(substr(NEW.IDART, 1, 3))) <> 'EPH')
begin
   :NEW.RACINE_PDT := substr(:NEW.IDART, 1, length(:NEW.IDART) - 4);
   :NEW.FINIT_PDT := substr(:NEW.IDART, length(:NEW.IDART) - 3, 4);
end;
/
Ca compile sans problème, mais ... ca n'a aucun effet.
J'ai mis un raise_application_error pour être certain que mon trigger est bien appellé : effectivement, il se déclanche bien sur l'insert.

Je ne vois pas ce qui cloche dans mon trigger (j'en fait très rarement).
Quelqu'un aurait-il une idée ?

__________________
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.
______________________________________________________________________________________________

Delphi 6#2 Entreprise - Delphi 2010 Architecte - Delphi XE2 Entreprise
Win XP Pro - OpenGL 2.1 - Oracle 11g - Firebird 2.5.0.2
Écrivez dans un français correct !!
Lung est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 15h52   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
a priori tout est OK...

t'es sûr que la longueur de IDART est supérieur à 4 ? Le problème c'est quoi, t'es colonnes RACINE_PDT et FINIT_PDT sont vides ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 15h56   #3
Membre Expert
 
Avatar de Lung
 
Analyste-programmeur
Inscription : mai 2002
Messages : 2 046
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Yonne (Bourgogne)

Informations professionnelles :
Activité : Analyste-programmeur
Secteur : Industrie

Informations forums :
Inscription : mai 2002
Messages : 2 046
Points : 2 046
Points : 2 046
Citation:
Envoyé par orafrance Voir le message
t'es sûr que la longueur de IDART est supérieur à 4 ?
J'ai au moins 10 caractères.

Citation:
Envoyé par orafrance Voir le message
Le problème c'est quoi, t'es colonnes RACINE_PDT et FINIT_PDT sont vides ?
Oui, elles sont vides. (j'ai pas précisé )
__________________
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.
______________________________________________________________________________________________

Delphi 6#2 Entreprise - Delphi 2010 Architecte - Delphi XE2 Entreprise
Win XP Pro - OpenGL 2.1 - Oracle 11g - Firebird 2.5.0.2
Écrivez dans un français correct !!
Lung est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 16h04   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Alors... j'ai besoin :

- script de création de la table
- lignes d'exemple (dont au moins une avec et une sans IDART qui commence par EPH
- ordre INSERT qui déclenche le trigger

orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 16h18   #5
Membre Expert
 
Avatar de Lung
 
Analyste-programmeur
Inscription : mai 2002
Messages : 2 046
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Yonne (Bourgogne)

Informations professionnelles :
Activité : Analyste-programmeur
Secteur : Industrie

Informations forums :
Inscription : mai 2002
Messages : 2 046
Points : 2 046
Points : 2 046
Aaarg !!!

J'ai trouvé.
En fait, l'outil que j'utilisais pour faire l'insert ne rafraichissait pas l'affichage de ma nouvelle ligne, ce qui fait que je voyais pas le résultat de mon trigger.

Je viens de faire l'essais avec SQL Plus, et là plus de problème.

(j'ai honte)
__________________
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.
______________________________________________________________________________________________

Delphi 6#2 Entreprise - Delphi 2010 Architecte - Delphi XE2 Entreprise
Win XP Pro - OpenGL 2.1 - Oracle 11g - Firebird 2.5.0.2
Écrivez dans un français correct !!
Lung est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 16h19   #6
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212


il est temps que les vancances arrivent
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 16h22   #7
Membre Expert
 
Avatar de Lung
 
Analyste-programmeur
Inscription : mai 2002
Messages : 2 046
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Yonne (Bourgogne)

Informations professionnelles :
Activité : Analyste-programmeur
Secteur : Industrie

Informations forums :
Inscription : mai 2002
Messages : 2 046
Points : 2 046
Points : 2 046
Citation:
Envoyé par orafrance Voir le message


Citation:
Envoyé par orafrance Voir le message
il est temps que les vancances arrivent
Mardi.

__________________
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.
______________________________________________________________________________________________

Delphi 6#2 Entreprise - Delphi 2010 Architecte - Delphi XE2 Entreprise
Win XP Pro - OpenGL 2.1 - Oracle 11g - Firebird 2.5.0.2
Écrivez dans un français correct !!
Lung est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h32.


 
 
 
 
Partenaires

Hébergement Web