Conditionnel Déclencheur
create or replace trigger insert_test_id
before insert on test
where(test.name='Ash')
begin
insert into test(s_no) values('def');
end
ma table est
test
id integer
nom varchar2(200)
s_no varchar2(250)
s'il vous plaît dites-moi que ce qui est l'erreur dans ce déclencheur. Je ne suis pas en mesure de trouver.
Merci de poster le message d'erreur!
ORA-04079: invalid spécification de déclenchement C'est le message d'erreur
ORA-04079: invalid spécification de déclenchement C'est le message d'erreur
OriginalL'auteur Durga Dutt | 2011-05-30
Vous devez vous connecter pour publier un commentaire.
Un rapide coup d'œil à la la documentation en ligne aurais dit que la condition de la syntaxe, c'est QUAND pas OÙ.
Vous devriez également consulter la colonne à l'aide du mot clé NEW, plutôt que le nom de la table. Et comme Gary souligne à juste titre, on ne peut qu'appliquer la clause conditionnelle de la LIGNE déclencheurs de NIVEAU:
La condition fonctionne aussi...
Il fonctionne même pour plusieurs lignes....
Quel est donc le problème? Ce:
Bien sûr, j'ai triché ici, pour générer l'erreur. Si le test de la valeur et de la valeur substituée sont codés en dur, le problème peut être évité. Mais si l'un est une recherche, le risque de récurrence est là.
Si ce que vous voulez faire est de remplacer une valeur d'entrée plutôt insérer une ligne supplémentaire, vous devez utiliser le simple syntaxe posté par @Lukas.
OriginalL'auteur APC
Essayer celui-ci alors:
"POUR CHAQUE LIGNE" en fait une déclaration de niveau de déclenchement, exécuté pour chaque ligne concernée par l'insertion dans la table. Qui devrait se débarrasser de l'ora-04077
OriginalL'auteur DCookie
Je ne pense pas que vous pouvez définir des déclencheurs avec récursive ce type de comportement. La bonne façon de le faire est
Cependant, cela ne insérez un enregistrement, pas de deux, si c'était votre intention d'origine.
Voir DCookie de réponse...
OriginalL'auteur Lukas Eder