Delphi ADO Postgre (Problema com auto incremento)
[b:c6e5a73fea]Pessoal, estou com problema na inserção de registro em tabelas com campo autoincremento
[/b:c6e5a73fea]
Minha tabela é a mais simples possivel:
create table teste (ID serial, descricao varchar(20))
Utilizo:
- Delphi 2007 com Update 3
- PostgreSQL Database Server 8.3
- PostgreSQL ODBC Driver ´psqlodbc_08_03_0400´
- Windows XP SP3
O problema ocorre quando insiro um registro qualquer nessa tabela, e logo após o Post, ela não me retorna o novo ID incluído. Segue abaixo meu código:
[color=green:c6e5a73fea][i:c6e5a73fea]ADOConnection1.Close;
ADOConnection1.LoginPrompt:= False;
ADOConnection1.ConnectionString:= ´Driver={PostgreSQL ANSI};Server=localhost;Port=5432;Database=meudb;Uid=postgres;Pwd=minhasenha´;
ADOConnection1.Connected:= True;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(´SELECT * FROM TESTE´);
ADOQuery1.Open;
ADOQuery1.Append;
ADOQuery1.FieldByName(´DESCRICAO´).AsString:= ´XXX´;
ADOQuery1.Post;[/i:c6e5a73fea][/color:c6e5a73fea]
Neste momento, eu deveria obter o valor do campo ID, mas ele só me retorna o valor ZERO. O mesmo não ocorre com o MySQL ou SQL Server.
Obs.: Passei pela mesma situação no Oracle, porém consegui resolver ajustando um parâmetro na query, mas no postgre não obtive êxito. O parâmetro ajustado foi o seguinte:
[color=green:c6e5a73fea][i:c6e5a73fea]ADOQuery1.Properties[´Update Resync´].Value:= adResyncInserts + adResyncAutoIncrement;
[/i:c6e5a73fea][/color:c6e5a73fea]
Obs.: Esse parâmetro é passado após o ADOQuery1.Open;
[/b:c6e5a73fea]
Minha tabela é a mais simples possivel:
create table teste (ID serial, descricao varchar(20))
Utilizo:
- Delphi 2007 com Update 3
- PostgreSQL Database Server 8.3
- PostgreSQL ODBC Driver ´psqlodbc_08_03_0400´
- Windows XP SP3
O problema ocorre quando insiro um registro qualquer nessa tabela, e logo após o Post, ela não me retorna o novo ID incluído. Segue abaixo meu código:
[color=green:c6e5a73fea][i:c6e5a73fea]ADOConnection1.Close;
ADOConnection1.LoginPrompt:= False;
ADOConnection1.ConnectionString:= ´Driver={PostgreSQL ANSI};Server=localhost;Port=5432;Database=meudb;Uid=postgres;Pwd=minhasenha´;
ADOConnection1.Connected:= True;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(´SELECT * FROM TESTE´);
ADOQuery1.Open;
ADOQuery1.Append;
ADOQuery1.FieldByName(´DESCRICAO´).AsString:= ´XXX´;
ADOQuery1.Post;[/i:c6e5a73fea][/color:c6e5a73fea]
Neste momento, eu deveria obter o valor do campo ID, mas ele só me retorna o valor ZERO. O mesmo não ocorre com o MySQL ou SQL Server.
Obs.: Passei pela mesma situação no Oracle, porém consegui resolver ajustando um parâmetro na query, mas no postgre não obtive êxito. O parâmetro ajustado foi o seguinte:
[color=green:c6e5a73fea][i:c6e5a73fea]ADOQuery1.Properties[´Update Resync´].Value:= adResyncInserts + adResyncAutoIncrement;
[/i:c6e5a73fea][/color:c6e5a73fea]
Obs.: Esse parâmetro é passado após o ADOQuery1.Open;
Edunascimento
Curtidas 0