Firebirdを使用して自動インクリメントフィールドを作成する簡単な方法はありますか? FlameRobin管理ツールをインストールしましたが、ツールを使用して自動インクリメントフィールドを作成するプロセスは複雑です。チェックボックスをクリックするか、Flamerobin以外のツールを使用するだけでは、このようなIDフィールドを作成できませんか?
Firebird 2.5以前には、自動インクリメントフィールドがありません。シーケンス(別名ジェネレーター)とトリガーを使用して、自分で作成する必要があります。
シーケンスはSQLの標準用語であり、ジェネレーターはFirebirdの歴史的な用語であり、どちらも使用されます。
宛先 シーケンスを作成 :
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 ; !!
Firebird 3は、ID列を導入するため、これを少し簡単にします。実際には、シーケンス+トリガーを生成するためのシンタックスシュガーです。
例えば
create table t1 (
id integer generated by default as identity primary key
)
Firebird3は「generated by default
"は、ユーザーが独自のID値を指定できることを意味します(重複値エラーが発生する可能性があります);" generated always
"Firebird4が追加されます。
Firebird 3リリースノート のセクション "Identity Column Type"も参照してください。
Flamerobinは、シーケンス+トリガーを作成するためのツールも提供します。既存のテーブルがある場合は、次の手順に従うことができます。