|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre confirmé
![]() Inscription : août 2004 Messages : 665 ![]() |
Bonjour,
Avec une application python travaillant en oracle 10g, A travers une IHM, je saisi des infos correspondant à une table 'AIRPORT', mais des champs mandatory sont cachés : ils vont être créé avec une valeur par défaut pour que le 'insert' se fasse et je compte utiliser le trigger suivant pour remettre la bonne valeur dans ce champ: Code :
Code :
ORA-04084: cannot CHANGE NEW VALUES FOR this TRIGGER type Merci |
||
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 739 ![]() |
Je ne suis pas un expert en triggers mais plusieurs points me paraissent scabreux :
- Tu met une condition sur :old dans un trigger de type "after INSERT". Le :old est il me semble toujours null dans ce cas. - Tu modifies ton enregistrement après son insertion, et c'est à mon avis cela qui cause l'erreur. Tu devrais utiliser un trigger de type "before INSERT".
__________________
Je ne réponds pas aux questions techniques par MP, le forum est là pour cela. La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber. (\ _ /) (='.'=) Voici Lapinou. Aidez le à conquérir le monde (")-(") en le reproduisant |
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : août 2004 Messages : 665 ![]() |
J'ai essayé avec "before insert", le trigger est effectivement créé, mais il ne se déclenche pas lors de l'ajout d'un record ...
Merci |
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 739 ![]() |
Cf ma première remarque, ton when ne sera jamais évalué à true.
J'imagine que tu veux dire que si le champ aixm_identifier de l'enregistrement à insérer est 'x' alors tu exécutes le trigger ? Dans ce cas il ne faut pas mettre :old mais bien :new.
__________________
Je ne réponds pas aux questions techniques par MP, le forum est là pour cela. La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber. (\ _ /) (='.'=) Voici Lapinou. Aidez le à conquérir le monde (")-(") en le reproduisant |
|
|
00
|
|
|
#5 | ||
![]() ![]() |
Sinon au lieu d'utiliser un déclencheur vous pouvez rajouter une contrainte DEFAULT sur votre table, et ne pas appeler la colonne lors de vos inserts :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Inscription : août 2004 Messages : 665 ![]() |
Bravo pour la contrainte DEFAULT que je connaissais pas, cela me simplifie plein de choses.
merci encore |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com