Bonjour,
J'ai une table avec un champ autoincrementé de type BigInt mais le trigger n'accepte pas une valeur > 32767.
comment résoudre ce problème?
D'avance merci
Ludo
Bonjour,
J'ai une table avec un champ autoincrementé de type BigInt mais le trigger n'accepte pas une valeur > 32767.
comment résoudre ce problème?
D'avance merci
Ludo
quel problème ?
quel est le code du trigger ?
Voila le code:
Mon problème est que je souhaiterai avoir un champ autoincrementé (NEW_TABLE1_FLD1) qui n'est pas limité à 32767
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
16 CREATE TABLE NEW_TABLE1 ( NEW_TABLE1_FLD1 BIGINT NOT NULL); ALTER TABLE NEW_TABLE1 ADD PRIMARY KEY (NEW_TABLE1_FLD1); CREATE TRIGGER BI_NEW_TABLE1_NEW_TABLE1_FLD1 FOR NEW_TABLE1 ACTIVE BEFORE INSERT POSITION 32767 AS DECLARE VARIABLE NEW_VAR BIGINT; BEGIN IF (NEW.NEW_TABLE1_FLD1 IS NULL) THEN NEW.NEW_TABLE1_FLD1 = GEN_ID(NEW_TABLE1_NEW_TABLE1_FLD1_GEN, 1); END;
J'ai utilisé SQL Manager 2008 Lite pour créer la table et le champ auto incrémenté.
il faudrait que tu lise un peux la doc
j'imagine que tu crois que POSITION 32767 veut dire limite à 32767
hors ce n'est absolument pas le cas
Firebird permet de déclarer plusieurs triggers pour la même table pour le même événement, POSITION indique l'ordre dans lequel les trigger d'une même table pour un même evenement vont se produire
donc pour ton trigger, la bonne valeur de POSITION est 0 (zéro)
un trigger before insert de position 1 s'exécutera après un trigger before insert de position 0
la limite de ton générateur est la limite d'un bigint soit 2^63 -1
Tu as tout à fait raison, j'ai confondu la valeur du générateur et la position du trigger.
Merci pour ton aide
Partager