在 Firebird 数据库中创建自动增量字段的最简单方法
Easiest way to create an auto increment field in Firebird database
是否有使用 Firebird 创建自动递增字段的简单方法?我已经安装了FlameRobin管理工具,但是通过该工具创建自增字段的过程比较复杂。我不能仅通过单击复选框或使用 Flamerobin 以外的其他工具来创建这样的标识字段吗?
Firebird 3 及更高版本
在 Firebird 3 中,它很容易创建,因为它引入了标识列。实际上,它是为您生成序列 + 触发器(如 Firebird 2.5 所示)的语法糖。
例如
create table t1 (
id integer generated by default as identity primary key
)
Firebird 3 仅支持“generated by default
”,这意味着用户可以指定自己的 id 值(这可能会导致重复值错误); “generated always
”已经 added in Firebird 4。
另见 Firebird 3 release notes, section "Identity Column Type", and the Firebird 4.0 Language Reference, section "Identity Columns (Autoincrement)"。
Firebird 2.5 及更早版本
Firebird 2.5 及更早版本没有 auto-increment 字段。您需要使用序列(又名生成器)和触发器自己创建它们。
序列是 SQL 标准术语,生成器是 Firebird 的历史术语;这两个术语在 Firebird DDL 语法中都可用。
CREATE SEQUENCE t1_id_sequence;
创建触发器以始终在主键 ID
:
的 table T1
上生成 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?
使用 FlameRobin
FlameRobin 还提供工具来为您创建序列 + 触发器。如果您已有 table,您可以按照以下步骤操作:
打开table属性:
打开主键列的列属性
默认列属性,select新生成器和创建触发器:
FlameRobin 生成的生成器(序列)和触发器代码。请注意,与我上面的示例相反,此触发器允许用户指定他们自己的 id 值,并使用一些逻辑来避免将来重复。执行这个(不要忘记提交):
是否有使用 Firebird 创建自动递增字段的简单方法?我已经安装了FlameRobin管理工具,但是通过该工具创建自增字段的过程比较复杂。我不能仅通过单击复选框或使用 Flamerobin 以外的其他工具来创建这样的标识字段吗?
Firebird 3 及更高版本
在 Firebird 3 中,它很容易创建,因为它引入了标识列。实际上,它是为您生成序列 + 触发器(如 Firebird 2.5 所示)的语法糖。
例如
create table t1 (
id integer generated by default as identity primary key
)
Firebird 3 仅支持“generated by default
”,这意味着用户可以指定自己的 id 值(这可能会导致重复值错误); “generated always
”已经 added in Firebird 4。
另见 Firebird 3 release notes, section "Identity Column Type", and the Firebird 4.0 Language Reference, section "Identity Columns (Autoincrement)"。
Firebird 2.5 及更早版本
Firebird 2.5 及更早版本没有 auto-increment 字段。您需要使用序列(又名生成器)和触发器自己创建它们。
序列是 SQL 标准术语,生成器是 Firebird 的历史术语;这两个术语在 Firebird DDL 语法中都可用。
CREATE SEQUENCE t1_id_sequence;
创建触发器以始终在主键 ID
:
T1
上生成 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?
使用 FlameRobin
FlameRobin 还提供工具来为您创建序列 + 触发器。如果您已有 table,您可以按照以下步骤操作:
打开table属性:
打开主键列的列属性
默认列属性,select新生成器和创建触发器:
FlameRobin 生成的生成器(序列)和触发器代码。请注意,与我上面的示例相反,此触发器允许用户指定他们自己的 id 值,并使用一些逻辑来避免将来重复。执行这个(不要忘记提交):