2

PGSQL は、次のように変換される「シリアル」フィールド タイプをサポートします。

colname integer DEFAULT nextval('tablename_colname_seq') NOT NULL

これにより、識別子の生成が非常に簡単になります。

Firebird では、トリガー ベースのソリューションしか見られませんでした。

各テーブルのトリガー作成を回避するために、Firebird で同じソリューションを使用することは可能ですか?

colname integer DEFAULT gen_id(generator, 1)

現在、Firebird バージョンをインストールして確認していませんが、誰かが答えを知っているかもしれません。

または、これに「my function」を使用できますか? 擬似:

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 を生成するためのトリガーのみがサポートされています。generated by default as identityFirebird 3.0 では、テーブル DDL で次のように指定するオプションが導入されました。

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

これは、トリガーと関連するシーケンスを作成するシンタックス シュガーです。

于 2013-04-04T12:01:58.997 に答える