Firebird序列支持的ID简写

时间:2010-02-15 20:00:25

标签: sql firebird sequence

其他人如何简化由Firebird> = 2.1中的SEQUENCE(a.k.a。GENERATOR)填充的简单串行代理键的创建?我认为这个过程相当艰巨:

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

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

在MySQL中,我只需输入:

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

但在Firebird中我输入:

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支持的ID字段。别人怎么做才能简化这个?使用IDE?在DDL文件上运行预处理的内部perl脚本?等

2 个答案:

答案 0 :(得分:2)

使用IBExpert,您可以点击4次

我认为SEQUENCE属于SQL标准。

答案 1 :(得分:0)

您始终可以创建序列而不是触发器,并在插入查询中使用GEN_ID(tbl_id_seq,1)。但正如Hugues已经说过的那样:有一些工具(比如IBExpert)可以让你很容易生成样板代码。