Bonjour
Je crée une global temporary table avec un générateur et un trigger.
Dans mon application, quand j'ajoute une ligne en ne mettant qu'un nom, je ramasse une erreur me disant que l'ID doit être fourni.
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
17
18
19
20
21
22
23
24
25 CREATE GLOBAL TEMPORARY TABLE LATEMP ( ID INTEGER NOT NULL, NOM VARCHAR(12)) ON COMMIT PRESERVE ROWS; ALTER TABLE LATEMP ADD PRIMARY KEY (ID) USING INDEX RDB$PRIMARY2; /* Definition for the `LATEMP_ID_GEN` generator : */ CREATE GENERATOR LATEMP_ID_GEN; /* Definition for the `BI_LATEMP_ID` trigger : */ SET TERM ^ ; CREATE TRIGGER BI_LATEMP_ID FOR LATEMP ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(LATEMP_ID_GEN, 1); END^
Dans SQL Manager, le colonne ID reste à null mais je peux ajouter autant de lignes que je veux.
Question: les autoincrement sont-ils possibles dans le GTT ou faut-il gérer ça autrement ?
Je me dois de compléter :
Mon programme est en Delphi. En fait, c'est l'utilisation directe d'un composant Table de Firedac qui pose problème.
Si je fais un insert SQL, ça fonctionne.
Le problème ne vient donc sans doute pas de Firebird lui-même.
Je laisse le sujet ouvert jusqu'à demain et je cherche côté Delphi en attendant.
Partager