Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour 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 15/04/2008, 21h06   #1
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 99
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 99
Points : 26
Points : 26
Par défaut Déclencheur créé avec erreurs de compilation.

salut tout le monde, j'ai crée un Trigger et lors de l'exécution on m'affiche toujours ce message alors qui est apparemment juste!!!
Code :
1
2
3
4
5
6
7
8
9
CREATE OR REPLACE TRIGGER TRG_PERSONNEL_NOM
AFTER UPDATE OF DIRECTION ON PERSONNEL
FOR each row
declare
begin
UPDATE AVANCE SET DIRECTION = :new.DIRECTION WHERE MATRICULE=PERSONNEL.MATRICULE
COMMIT
END;
/
Je voudrai mettre à jour le champs (direction) dans la table personnel et qu'elle soit aussi à jour dans la table Avance
mehdiyou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2008, 22h08   #2
Membre confirmé
 
Inscription : juillet 2007
Messages : 357
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 357
Points : 226
Points : 226
pour voir les erreurs de compilation en sqlplus tu peux taper la commande

Citation:
SHOW ERRORS TRIGGER USER.TRIGGER_NAME
Sinon pour ton cas

1-rajoute des ;
2-enleve le commit
3 - remplace PERSONNEL.MATRICULE par :new.matricule
4- Verifie que un trigger AFTER accepte la syntaxe :new/:old
ZashOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2008, 22h23   #3
Rédacteur/Modérateur
 
Avatar de Vincent Rogier
 
vincent rogier
Inscription : juillet 2007
Messages : 2 355
Détails du profil
Informations personnelles :
Nom : vincent rogier
Âge : 34

Informations forums :
Inscription : juillet 2007
Messages : 2 355
Points : 3 108
Points : 3 108
et aussi ajoutes un ; après chaque ordre sql....
__________________
Vincent Rogier.

Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

OCILIB (C Driver for Oracle)

Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Vincent Rogier est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 11h16   #4
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 99
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 99
Points : 26
Points : 26
oui, merci beaucoup ça a marché. voici le code sans erreurs:
Code :
1
2
3
4
5
6
7
CREATE OR REPLACE TRIGGER TRG_PERSONNEL_NOM
AFTER UPDATE OF DIRECTION ON PERSONNEL
FOR each row
declare
begin
UPDATE AVANCE SET DIRECTION = :new.DIRECTION WHERE MATRICULE=:new.MATRICULE;
END;
merci beaucoup les mecs.
Mais le problème, est ce que je vais répéter ce même TRIGGER pour tous le champs ???
mehdiyou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 11h37   #5
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 457
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 457
Points : 4 222
Points : 4 222
Code sans erreur ???

UPDATE AVANCE SET DIRECTION = :new.DIRECTION WHERE MATRICULE=:new.MATRICULE;
COMMIT
END;

1/ Le commit sans ; va planter à la compil.
2/ Le Commit dans un trigger va planter à l'exécution (Pas le droit de commiter dans un trigger)
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 11h40   #6
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 457
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 457
Points : 4 222
Points : 4 222
Citation:
Envoyé par mehdiyou Voir le message
Mais le problème, est ce que je vais répéter ce même TRIGGER pour tous le champs ???

http://sheikyerbouti.developpez.com/...e=Chap6#L6.3.4

Non, tu peux mettre une liste de colonnes dans le OF.
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 12h39   #7
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 99
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 99
Points : 26
Points : 26
oui, t'as raison, parce que je travaille sur 2 PC et donc j'ai pas fait du copier/coller. Merci en tous cas. et en ce qui concerne le trigger, je peux mettre toutes les colonnes de la table et ensuite je mets des update pour chaque colonne ?
mehdiyou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h23.


 
 
 
 
Partenaires

Hébergement Web