Firebird - PGSQL 中的串行字段? [复制]
Posted
技术标签:
【中文标题】Firebird - PGSQL 中的串行字段? [复制]【英文标题】:Firebird - serial field as in PGSQL? [duplicate] 【发布时间】:2013-03-26 11:23:09 【问题描述】: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)
【问题讨论】:
为什么要避免触发器? 【参考方案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)
);
这是为您创建触发器和相关序列的语法糖。
【讨论】:
谢谢!这很有趣,因为布尔字段只会出现在 FB3 中……但是什么时候发布呢? @durumdara 我不知道 Firebird 3 什么时候发布。它仍在开发中,第一个 alpha 版本尚未发布。以上是关于Firebird - PGSQL 中的串行字段? [复制]的主要内容,如果未能解决你的问题,请参考以下文章