2010-02-15 4 views
0

Que font les autres pour simplifier la création de clés de substitution en série simples, peuplées d'un SEQUENCE (a.k.a. GENERATOR) dans Firebird> = 2.1? Je Finc le processus relativement difficile:Abréviation d'identificateur de séquence protégée par Firebird

Par exemple, dans PostgreSQL, je tape simplement:

pg> CREATE TABLE tbl (
    > id SERIAL NOT NULL PRIMARY KEY, 
    > ... 

En MySQL, je tape simplement:

my> CREATE TABLE tbl (
    > id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    > ... 

Mais Firebird type I:

fb> CREATE TABLE tbl (
    > id BIGINT NOT NULL PRIMARY KEY, 
    > ... 

fb> CREATE SEQUENCE tbl_id_seq; 

fb> SET TERM !!; 
    > CREATE TRIGGER tbl_id_trg FOR tbl 
    > ACTIVE BEFORE INSERT POSITION 0 
    > AS 
    > BEGIN 
    > IF ((new.id IS NULL) OR (new.id <= 0)) THEN 
    > BEGIN 
    >  new.id = GEN_ID(tbl_id_seq, 1); 
    > END 
    > END !! 
    > SET TERM ; !! 

... et je me assez ennuyé par le temps que je tends la définition du déclencheur. Cependant, je crée régulièrement des champs d'ID SEQUENCE -backed pour les tables temporaires, de développement et jetables. Que font les autres pour simplifier cela? Travailler avec un IDE? Exécuter un script perl interne de pré-traitement sur le fichier DDL? Etc.

Répondre

2

Utilisez IBExpert et vous pouvez le faire en 4 clics

Je pense que la séquence est dans la norme SQL.

0

Vous pouvez toujours créer la séquence et pas de déclenchement et utiliser le GEN_ID (tbl_id_seq, 1) dans votre requête d'insertion. Mais comme l'a déjà dit Hugues: il existe des outils (comme IBExpert) qui vous permettront de générer très simplement le code standard.