2

PGSQL 支持“串行”字段类型,转换为:

colname integer DEFAULT nextval('tablename_colname_seq') NOT NULL

这使得标识符生成非常容易。

在 Firebird 中,我只看到了基于触发器的解决方案。

是否可以在 Firebird 中使用相同的解决方案来避免为每个表创建触发器?

colname integer DEFAULT gen_id(generator, 1)

我现在没有安装 Firebird 版本来检查它,但也许有人知道答案。

或者我可以为此使用“我的功能”吗?伪:

create function mygenid(genname) returns integer
begin
   return gen_id(genname);
end;

create table x(
   colname integer DEFAULT mygenid(generator, 1)
4

1 回答 1

1

Firebird 2.5 及更早版本仅支持生成 id 的触发器。Firebird 3.0 引入了一个选项来在 DDL 表中指定它generated by default as identity

create table objects (
   id integer generated by default as identity primary key,
   name varchar(15)
);

这是为您创建触发器和相关序列的语法糖。

于 2013-04-04T12:01:58.997 回答