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 01/02/2012, 17h31   #1
Invité de passage
 
Otmane MALIH
Inscription : décembre 2010
Messages : 22
Détails du profil
Informations personnelles :
Nom : Otmane MALIH

Informations forums :
Inscription : décembre 2010
Messages : 22
Points : 1
Points : 1
Par défaut Aide pour création d'un trigger Oracle

Bonjour à tous,
Bon j'essaye de développer un trigger sous oracle sans succès.
Ce que je veux c'est que pour chaque insertion dans la table, le trigger vérifie l’existence d'une ligne similaire? Si elle existe il met à jour un champs de cette ligne, si non il l'ajout tout simplement.

J'ai développer le trigger suivant mais ça me donne une erreur:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
CREATE OR REPLACE TRIGGER tgr
before INSERT ON apcd FOR each row
declare nbr number;
temp number;
cursor cur(bl number) IS
SELECT xxx FROM apcd WHERE xxx=bl;
begin
 open cur(:new.xxx);
 fetch cur INTO temp;
 IF cur%NOTFOUND then
   NULL;
 else
   SELECT 0 INTO :new.yyy FROM dual;
 end IF;
 close cur;
end;
l'erreur que je reçoit est: ORA-0313:fin de fichier sur canal de communication.
Merci à tous.
malimaot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 17h45   #2
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 447
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 447
Points : 4 193
Points : 4 193
Ce n'est pas possible de le faire par trigger. C'est à la partie applicative de le faire.
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 17h48   #3
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 688
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 688
Points : 10 444
Points : 10 444
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Ou encore utiliser la commande MERGE qui est conçue spécifiquement pour cela.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 17h50   #4
Invité de passage
 
Otmane MALIH
Inscription : décembre 2010
Messages : 22
Détails du profil
Informations personnelles :
Nom : Otmane MALIH

Informations forums :
Inscription : décembre 2010
Messages : 22
Points : 1
Points : 1
Je ne pense pas que c'est possible pour mon cas, car c'est une procédure qui insert ces lignes et je ne peux pas modifier son code.
malimaot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 17h58   #5
Invité de passage
 
Otmane MALIH
Inscription : décembre 2010
Messages : 22
Détails du profil
Informations personnelles :
Nom : Otmane MALIH

Informations forums :
Inscription : décembre 2010
Messages : 22
Points : 1
Points : 1
Citation:
Envoyé par Waldar Voir le message
Ou encore utiliser la commande MERGE qui est conçue spécifiquement pour cela.
Merci pour l'information.
Je vais essayer ça et voir si ça marche.
Mais c'est quelqu'un peut m'aider avec le trigger ça sera parfait.
malimaot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 10h04   #6
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 447
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 447
Points : 4 193
Points : 4 193
Tu ne peux pas lire la table "utilisée" par le trigger (cf table mutante)
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 10h11   #7
Invité de passage
 
Otmane MALIH
Inscription : décembre 2010
Messages : 22
Détails du profil
Informations personnelles :
Nom : Otmane MALIH

Informations forums :
Inscription : décembre 2010
Messages : 22
Points : 1
Points : 1
Pour utiliser Merge je dois pouvoir modifier la procédure qui charge les données, ce qui n'est pas possible pour moi.
Alors je reste avec les trigger.
Le trigger que j'ai codé ne se compile pas. Merci de vérifier avec moi ou de me proposer un code qui fonctionne.

Merci
malimaot est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 02/02/2012, 10h36   #8
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 447
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 447
Points : 4 193
Points : 4 193
Ce n'est pas possible par trigger.
Au pire tu crées un synonyme qui pointe vers une autre table identique, et tu crées des triggers sur cette autre table qui fait les insertions / update / delete dans la table principale.
__________________
More Code : More Bugs. Less Code : Less Bugs
McM 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 17h35.


 
 
 
 
Partenaires

Hébergement Web