Ciao a tutti, spero possiate aiutarmi
Delphi 7 en
Zeos lib 6.6.6-stable
Postgresql 8.4.7
In una tabella tbl_protocollo_categoria ho un campo auto incrementante codice_protocollo_categoria di tipo SERIAL, in altri progetti per recuperare il valore assegnato dal DB al campo serial, utilizzavo un campo di appoggio nella tabelle in cui inserivo l’ip della postazione che aveva effettuato l’inserimento e poi con una select con clausola where = ip_macchina recuperavo il valore inserito e con un update aggiornano il campo ip_macchina = ‘’.
Volendo utilizzare la funzione currval() di postgresql non riesco a recuperare l’ultimo valore serial inserito dalla sessione corrente il pezzo di codice è questo:
Grazie per l’aiutocodice:with sqlProtocolloCategorie do begin SQL.Clear(); SQL.Add( insertProtocolloCategoria ); // insertProtocolloCategoria contiene il codice sql per l’inserimento ExecSQL(); // fino qui tutto ok Active := false; SQL.Clear(); SQL.Add('SELECT pg_catalog.currval(''tbl_protocollo_categoria_codice_protocollo_categoria_seq'')' ); SQL.Open(); // qui mi da il seguente errore: EDatabaseError ‘sqlProtocolloCategorie: Filed ‘codice_protocollo_categorie’ not found Il campo codice_protocollo_categorie è il campo auto incrementante di tipo serial Ho provato anche a modificare la query in questo modo: ('SELECT currval(''SELECT currval(''tbl_protocollo_categoria_codice_protocollo_categoria_seq'') from tbl_protocollo_categoria' ); mettendo il nome della tabella … from tbl_protocollo_categoria, ma l’errore è sempre quello. PS Nel Field Editor del componente query sqlProtocolloCategoria sono enumerati tutti i campi della tabella end;

Rispondi quotando