2010-02-15 36 views
0

其他人如何简化在Firebird> = 2.1中由SEQUENCE(又名GENERATOR)填充的简单序列代理键的创建?我FINC过程比较艰苦:Firebird序列支持的ID简写

例如,在PostgreSQL中,我只需键入:

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

在MySQL中,我只需键入:

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

但在火鸟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 ; !! 

......当我达到触发定义的时候,我感到非常无聊。但是,我经常为临时表​​,开发表和废弃表制作SEQUENCE -backed ID字段。别人做了什么来简化这个?使用IDE?在DDL文件上运行一个预处理的内部perl脚本?等

回答

2

使用IBExpert,您可以在4次点击

我觉得SEQUENCE是在SQL标准做出来。

0

您可以随时创建序列并且不触发,并在插入查询中使用GEN_ID(tbl_id_seq,1)。但是,Hugues已经说过:有一些工具(如IBExpert)可以让你生成样板代码变得非常简单。