Problème à la création d'un trigger
Bonjour,
Dans un script, je crée une table avec un trigger pour lauto-incrémentation d'un générateur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| CREATE TABLE "COMPOSANT"
(
"ID_COMPOSANT" INTEGER NOT NULL,
"F_COMPOSANT" VARCHAR(60) NOT NULL,
"N_COMPOSANT" VARCHAR(60) NOT NULL,
"LNK_ELEMENT" INTEGER NOT NULL,
PRIMARY KEY ("ID_COMPOSANT")
);
CREATE TRIGGER "ID_COMPOSANT" FOR "COMPOSANT"
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.id_composant is null) then
new.id_composant = gen_id(gen_composant,1);
end; |
Le script est exécuté sans erreur mais le trigger n'est pas référencé dans la liste des triggers et lorsque je consulte la metadata, voici ce que je lis :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| CREATE TABLE "COMPOSANT"
(
"ID_COMPOSANT" INTEGER NOT NULL,
"F_COMPOSANT" VARCHAR(60) NOT NULL,
"N_COMPOSANT" VARCHAR(60) NOT NULL,
"LNK_ELEMENT" INTEGER NOT NULL,
PRIMARY KEY ("ID_COMPOSANT")
);
ALTER TABLE "COMPOSANT" ADD <<======
as
begin
if (new.id_composant is null) then
new.id_composant = gen_id(gen_composant,1);
end; |
Dans le même script, je crée d'autres tables, de même structure, et je ne rencontre pas le problème.
Par contre le problème se répète pour des tables de structures différentes, bref je ne trouve pas une relation de cause à effet entre la structure de la table et la mauvaise création du trigger
Que se passe t'il ?
J'utilise IB 7.5
Merci de votre aide
Vincent
_______________________________
Balises [Code] rajoutées par yobenzen
Rep: Problème à la création d'un trigger
Bonjour
Les triggers sont générés via les outils de IBConsole.
Je ne fais que nommer le trigger, choisir la date, l'événement et j'entre le code voulu entre le begin .. end donné par IBConsole.
Je viens de faire un essai supplémentaire en nomant le trigger id_compo au lieu de id_composant et cela marche.
Est-ce possible qu'en donnant au trigger le même que celui d'un champ de la table cela provoque l'erreur à laquelle je suis confrontée ?
Merci de votre aide
Vincent
Rep: Problème à la création d'un trigger
L'inspiration m'est venue en lisant le message de Barbibulle.
J'ai créé un trigger en le nommant autrement que du nom d'un champ de la table sur laquelle agit le trigger. Et cela marche.
Bref, il ne faut jamais nommer de la même manière deux fonctionalités différentes qui peuvent inter agir