在Firebird数据库中创建自动增量字段的最简单方法

时间:2016-01-01 05:36:01

标签: field firebird auto-increment

使用Firebird创建自动增量字段有一种简单的方法吗?我已经安装了FlameRobin管理工具,但是通过该工具创建自动增量字段的过程很复杂。我是否可以通过单击复选框或使用除Flamerobin之外的其他工具来创建此类身份字段?

1 个答案:

答案 0 :(得分:23)

Firebird 2.5及更早版本没有自动增量字段。您需要使用序列(也称为生成器)和触发器自己创建它们。

Sequence是SQL标准术语,generator是历史Firebird术语,它们都被使用。

create a sequence

CREATE SEQUENCE t1_id_sequence;

创建触发器以始终使用主键T1在表ID上生成ID:

set term !! ;
CREATE TRIGGER T1_AUTOINCREMENT FOR T1
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  NEW.ID = next value for t1_id_sequence;
END!!
set term ; !!

另请参阅:How to create an autoincrement column?

Firebird 3使这更容易,因为它引入了标识列。在实践中,它是用于为您生成序列+触发器的语法糖。

例如

create table t1 (
   id integer generated by default as identity primary key
)

Firebird 3仅支持“generated by default”,这意味着用户可以指定自己的id值(这可能会导致重复值错误); “generated always”将添加Firebird 4。

另请参阅Firebird 3 release notes,“标识列类型”部分。

Flamerobin还提供工具来为您创建序列+触发器。如果您有现有表,则可以按照以下步骤操作:

  1. 打开表格属性:

    open table properties

  2. 打开主键列的列属性

    open column properties

  3. 默认列属性,选择新生成器创建触发器

    default column properties

  4. 由flamerobin生成的生成器(序列)和触发器代码。请注意,与上面的示例相反,此触发器允许用户指定自己的id值,并使用一些逻辑来避免将来重复。执行此操作(不要忘记提交):

    generated code for generator + trigger