- Firebird'i kavramak için bir proje hazırlıyorum. İlk takıldığım nokta Trigger'ı devreye girip girmemesi konusu oldu.
- Paralel bir olay daha... DEFAULT tanımlanmış değerler de aynı durumla karşı karşıya.
- İlk olarak AutoIncremental artış yapmak üzere bir TRIGGER tanımı hazırladım. Tablo1 tablosunun T1_ID isimli alan adına yönelttim.
Kod: Tümünü seç
with IBSQL do
// TRIGGER - AutoInc
try
SQL.Clear;
SQL.Add('CREATE TRIGGER AUTOINC FOR TABLO1');
SQL.Add('ACTIVE BEFORE INSERT POSITION 0');
SQL.Add('AS');
SQL.Add('begin');
SQL.Add(' if (NEW.T1_ID is null) then NEW.T1_ID=GEN_ID(GEN_AUTOINC, 1);');
SQL.Add('end');
Prepare;
ExecQuery;
finally
Close;
end;
Kod: Tümünü seç
With DataModule1.IBSQL1 do // Trigger'ler çalışıyor...
begin
SQL.Clear;
SQL.Add('Insert Into TABLO1');
SQL.Add(' (KELIME, RESIM, SES, ANIME)');
SQL.Add(' values');
SQL.Add(' (:KELIME, :RESIM, :SES, :ANIME)');
ParamByName('KELIME').Value := 'a';
ParamByName('RESIM').Value := 'b';
ParamByName('SES').Value := 'c';
ParamByName('ANIME').Value := 'd';
ExecQuery;
end; //With
- IBDataSet'in InsertSQL tanımı aşağıdaki gibidir...
Kod: Tümünü seç
With DataModule1.IBDataset1 do
begin
InsertSQL.Clear;
InsertSQL.Add(' insert into TABLO1');
//InsertSQL.Add(' (T1_ID, KELIME, RESIM, SES, ANIME)');
InsertSQL.Add(' (KELIME, RESIM, SES, ANIME)'); // T1_ID Hariç tutuldu.
InsertSQL.Add(' values');
//InsertSQL.Add(' (:T1_ID, :KELIME, :RESIM, :SES, :ANIME)');
InsertSQL.Add(' (:KELIME, :RESIM, :SES, :ANIME)');
end;
- Bilgisini paylaşacaklara şimdiden teşekkürler..