Haruyuki Mohri

毛利春幸のブログです。

Interbase テーブルFieldのAutoIncrement

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

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

-- #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テーブルを割り当てます。

-- #generator作成
create generator sq1;

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

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

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

FireDAC TIntegerField設定

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

f:id:mojeld:20170629120759p:plain

TDBGridで表示

TDBGridで表示し、name_ だけを入力すれば連番が振られるのが確認できます。 f:id:mojeld:20170629120811p:plain

参考URL

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