Interbase 自動インクリメント

  • 1
    いいね
  • 0
    コメント

Interbase 2017で テーブルの自動インクリメント

下記の様なテーブルがあったとして

create_table.sql
-- #t1 テーブル作成
create table t1(
    num_ int not null,
    name_ varchar(50) not null,
    primary key(num_)
);

t1テーブル

field名 null / PK
num_ int not null (PK)
name_ varchar(50) not null

trigger作成

新しくtriggerとgeneratorを作成、
triggerにはt1テーブルを割り当てます。

create_generator_trigger.sql
-- #generator作成
create generator sq1;

-- #t1テーブルのinsert前に tr1トリガーを作る
create trigger tr1 for t1
before insert as
begin
    new.num_ = gen_id(sq1,1);
end;

t1テーブルにインサートテスト

insert_t1.sql
-- #t1テーブルにインサート #自動番号
insert into t1(name_) values('森鴎外');

FireDAC TIntegerField設定

プロパティ 内容
AutoGenerateValue arAutoInc
ProviderFlags [pfInWhere,pfInKey]
ReadOnly true
Required false

2017-06-291124.png

TDBGridで表示

TDBGridで表示し、name_ だけを入力すれば連番が振られるのが確認できます。
2017-06-291136.png

参考URL

自動インクリメント_フィールド(FireDAC)
http://qiita.com/mojeld/items/0c62cf45fb509e4a2ea8
http://qiita.com/mojeld/items/d83ab178e1641375b538