Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 10/06/2008, 08h48   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 30
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 30
Points : 10
Points : 10
Par défaut Probléme sur un trigger

Je souhaiterai créer un trigger sur une table (po_requisition_lines_all )
qui alimentera un champs par un autre de la même table de la même ligne

1) j'ai crée un trigger after Insert rows
qui prend la valeur :NEW.champ1 := NEW.CHAMP2
je rçoit une erreur à la compilation
2) j'ai crée un trigger before insert
le champ n'est pas alimenté

J'ai plus d'idée
izghad_06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 09h23   #2
Membre chevronné
 
Avatar de philcero
 
Inscription : septembre 2007
Messages : 519
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 519
Points : 649
Points : 649
Tu peux poster le code de ton BEFORE INSERT s.v.p ?

Plus les informations de version Oracle & OS ce serait parfait...
__________________
Pas de réponse aux messages privés. Faites un post pour vos problèmes, que tout le monde en profite...
philcero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 09h26   #3
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Citation:
Envoyé par izghad_06 Voir le message
je rçoit une erreur à la compilation
Et nous, on doit la deviner ?
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 09h34   #4
Membre chevronné
 
Avatar de philcero
 
Inscription : septembre 2007
Messages : 519
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 519
Points : 649
Points : 649
Citation:
Et nous, on doit la deviner ?
Je lance ma boule de cristal et hop : Affecter une colonne dans un AFTER INSERT (:new.toto := ...) n'est tout simplement pas possible vu que les colonnes sont en READ ONLY à cette étape...

__________________
Pas de réponse aux messages privés. Faites un post pour vos problèmes, que tout le monde en profite...
philcero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 09h36   #5
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 30
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 30
Points : 10
Points : 10
Voilà
l'erreur de compilation

After trigger

Creation of the trigger scifr_po_req_lineS_all_air_1
CREATE OR REPLACE TRIGGER scifr_po_req_lines_all_air_1

ERROR at line 1:
ORA-04084: cannot change NEW values for this trigger type


pour le BEFORE Insert champ n'est pas alimenté.

je voulais recopié l'ID de table dans un autre champ
L'ID etant une séquence je pense que c'est pour ça.

La séquence n'etant pas encore générée (il insert une donnée vide )

Merci de votre réactivité
izghad_06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 09h54   #6
Membre chevronné
 
Avatar de philcero
 
Inscription : septembre 2007
Messages : 519
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 519
Points : 649
Points : 649
Si tu postais ton code BEFORE INSERT, je pense qu'on avancerait un petit peu...

__________________
Pas de réponse aux messages privés. Faites un post pour vos problèmes, que tout le monde en profite...
philcero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 10h03   #7
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 30
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 30
Points : 10
Points : 10
Code :
1
2
3
4
5
6
7
8
9
10
11
12
CREATE OR REPLACE TRIGGER scifr_po_req_lines_all_bir_1
   before INSERT ON PO_REQUISITION_LINES_ALL
   REFERENCING NEW AS NEW OLD AS OLD
   FOR EACH ROW
BEGIN
 
  :NEW.OKE_CONTRACT_HEADER_ID := :NEW.REQUISITION_LINE_ID ;
EXCEPTION
            WHEN OTHERS
            THEN
               NULL;
 END scifr_po_req_lines_all_bir_1;
c'est un environnement oracle application
izghad_06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 10h21   #8
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 30
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 30
Points : 10
Points : 10
Par défaut résolu

J'ai contourné le probléme

on créant une table temporaires et deux triggers BEFORE et un AFTER insert


OK Merci de votre aide
izghad_06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 11h46   #9
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Ca me parait bien compliqué pour un problème aussi simple

A quel moment est alimenté ta colonne REQUISITION_LINE_ID ?
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR 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 02h33.


 
 
 
 
Partenaires

Hébergement Web