首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Firebird数据库中创建自动增量字段的最简单方法

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

Stack Overflow用户
提问于 2016-01-01 13:36:01
回答 1查看 21.4K关注 0票数 12

有没有使用Firebird创建自动增量字段的简单方法?我已经安装了FlameRobin管理工具,但是通过该工具创建自动增量字段的过程很复杂。我不能仅仅通过单击复选框或使用Flamerobin以外的其他工具来创建这样的身份字段吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-01 18:52:59

Firebird 3及更高版本

在Firebird 3中,它很容易创建,因为它引入了身份列。实际上,它是为您生成序列+触发器(如Firebird 2.5所示)的语法糖。

例如

代码语言:javascript
复制
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“标识列类型”一节。

Firebird 2.5和更早版本

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

序列是SQL标准术语,生成器是历史上的Firebird术语;这两个术语都在Firebird DDL语法中可用。

转到create a sequence

代码语言:javascript
复制
CREATE SEQUENCE t1_id_sequence;

创建触发器以始终在主键为ID的表T1上生成id

代码语言:javascript
复制
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还提供了为您创建序列+触发器的工具。如果您有现有的表,则可以执行以下步骤:

  1. 打开表属性:

  1. 打开主键列

的列属性

select new >新建默认列属性,选择

  1. generator并创建触发器

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

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34553826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档