-1
Firebirdにテーブルを作成し、自動インクリメント用のカラムを設定したいができない。テーブルを作成することはできますが、自動インクリメント用の列は設定できません。DelphiでFirebirdでテーブルと自動インクリメントカラムを作成
私が使用しています:
Firebirdの組み込み2.5
のDelphi XE3
UniDAC Componnent
私のSQLコマンドを:
with UniSQL1 do
begin
SQL.Text := 'Create TABLE tab1(EMP_NO EMPNO NOT NULL, '+
'FIRST_NAME "FIRSTNAME" NOT NULL, '+
'LAST_NAME "LASTNAME" NOT NULL, '+
'PHONE_EXT VARCHAR( 4) COLLATE NONE, '+
'PRIMARY KEY (EMP_NO) '+
'); '+
'CREATE GENERATOR gen_tab1_EMP_NO; '+
'SET GENERATOR gen_tab1_EMP_NO TO 0; '+
'SET TERM !! ; '+
'CREATE TRIGGER SET_EMP_NO FOR tab1 ACTIVE BEFORE INSERT POSITION 0 AS '+
'BEGIN '+
'if (new.emp_no is null) then '+
'new.emp_no = gen_id(gen_tab1_EMP_NO, 1); '+
'END !!'+
'SET TERM ; !!';
try
Execute;
ShowMessage('Table Created');
except
ShowMessage('Table Not Created');
end;
end;
問題を説明し、発生したエラーを示してください。また、一度に複数のステートメントを実行しようとしていることにも注意してください.Firebird自体では許可されていないので、使用しているコンポーネントによって実際にサポートされていることを確認してください(別のステートメントで分割します)。 –
それぞれのステートメントの後にコミットするのを忘れてはいますが、なぜこれらのステートメントがデルファイコードではなくデータベースレベルで実行されているのかわかりません。 – Fero
@ Fero68作業単位全体の直後に、各DDL文の後にコミットする必要はありません。 –