Olá galera,
Pelo que pesquisei no Google a combinação de campo do tipo Serial + tdataset
não é legal, e pelo que vi, a solução seria via POG (argh! :P*), vejam:
Tabela:
=====================================
CREATE TABLE teste
(
oid serial NOT NULL,
nome character varying(50),
CONSTRAINT pk_oidteste PRIMARY KEY (oid)
);
=====================================
Código (com Zeos):
...
procedure TForm1.Button1Click(Sender: TObject);
begin
ZConnection1.StartTransaction;
try
ZQuery1.SQL.Text := 'insert into Teste (Nome) values (''testando'')
returning Oid';
ZQuery1.Open; // Será?
ShowMessage(IntToStr(ZQuery1.FieldByName('Oid').AsInteger));
ZConnection1.Commit;
except
ZConnection1.Rollback;
end;
end;
...
Hum... Com Open? Isso é POG e das feias, só existe essa maneira de fazer? Não
tem como pegar o valor do sequencial antes de aplicar o commit?
No Firebird-2.1.3 o código acima nem funcionou.
--
Silvio Clécio
--
Contato - silvioprog<gmail/googlewave>
Blog estilo mural - silvioclecio.blogspot.com
Twitter - twitter.com/silvioprog
--
programmer ObjectPascal - silvioprog.blogspot.com
--
"Duas coisas instruem o homem, qualquer que seja a sua natureza: o instinto e a
experiência. Blaise Pascal.