其他人如何简化由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脚本?等
答案 0 :(得分:2)
使用IBExpert,您可以点击4次
我认为SEQUENCE属于SQL标准。
答案 1 :(得分:0)
您始终可以创建序列而不是触发器,并在插入查询中使用GEN_ID(tbl_id_seq,1)。但正如Hugues已经说过的那样:有一些工具(比如IBExpert)可以让你很容易生成样板代码。