Bonjour,
Dans un script, je crée une table avec un trigger pour lauto-incrémentation d'un générateur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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