Ciao, se non ho capito male il tuo problema è che vuoi un indice autoincrementante in modo da identificare univocamente i vari records, giusto ? Se è così, allora la soluzione è molto semplice, in quanto PostgreSQL mette a disposizione le SEQUENCE che sono fatte apposta per questo. Esempio: CREATE SEQUENCE "ricette_seq" start 1 increment 1 maxvalue 2147483647 minvalue 1 cache 1 ; CREATE TABLE "ricette" ( "id_ricette" int4 DEFAULT nextval('ricette_seq'::text) NOT NULL, "nome_farmaco" text, PRIMARY KEY ("id_ricette") ); in questo modo, ad ogni record inserto nella tabella ricette verrà assegnato un campo "id_ricette" intero autoincrementante; nota che quando fai le insert NON devi passare il campo "id_ricette" in quanto se lo deve generare da solo (ovviamente!) Il campo PRIMARY KEY non è obbligatorio, ma ti consiglio di metterlo sempre in quanto rende più snelle le ricerche fatte dalle SELECT. spero di esserti stato di aiuto ciao Giorgio ============================ Giorgio Andreoletti - mentelocale S.r.l. responsabile hardware e networking responsabile sviluppo web www.mentelocale.it giorgio.andreoletti@xxxxxxxxxxxxxx ============================ ----- Original Message ----- From: "Roberto A. F." <robang@xxxxxxxxx> To: <lugge@xxxxxxxxxxxxx> Cc: <p.bongy@xxxxxx> Sent: Friday, March 29, 2002 7:56 PM Subject: [Lugge] [Fwd: select max(record) ....] > Ciao, > > vi invio un quesito di un mio amico che sta sviluppando un SW di > tarrifazione per farmacie sotto linux e ha questo problema. > Io purtroppo non conosco a fondo il postgres e quindi non so dargli > una risposta esatta > > -------- Original Message -------- > Subject: select max(record) .... > Date: 28 Mar 2002 02:55:45 +0100 > From: Paolo Bongiorno <p.bongy@xxxxxx> > To: robang@xxxxxxxxx > > > Ciao Roberto scusami se ti disturbo, recentemente ho visto albeggiare > svariate volte nella determinazione di completare il programma. > > [cut] > > ... Sono stato prolisso ma volevo raccontarti a che punto sono, adesso > sono le 2.30 del mattino e butto la spugna perchè da un ora giro attorno > ad un problema insulso senza trovare la soluzione. > > Per cancellare univocamente la riga selezionata ho numerato ogni tupla > creando un campo record, alla conferma della ricetta faccio una: > > res = PQexec(connessione,"SELECT MAX(record) from database;"); > max_record = atoi(PQgetvalue(res,0,0)); > ++max_record; > > ... così ho il valore pronto per il successivo inserimento, il fatto è > che mi sono accorto solo adesso che il massimo valore che ricava è "9" > e non ho idea del perchè, se l' ultimo è dieci per lui il più grande è > sempre "9" percui mi inserisce i record successivi tutti con il 10. > > Cosa ne pensi ? > -- > ,__ ,_ ,___ .-------=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-. > ||_) ||\ ||_ / Proud Member & Master of the LUGGE | > || \ ||¯\ ||¯ linuxgrp: http://lugge.ziobudda.net | > ¯¯ ¯° ¯¯ ¯° ¯¯ ° homepage: http://digilander.iol.it/robang | > \ Roberto A. Foglietta reg num : #219348 by the Linux Counter | > `---------------------=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-' > > <========---------- > Prima di scrivere in m-list per favore leggi il regolamento > http://lugge.ziobudda.net/soci/manifesto.htm#list > > ----------========> > Corso Linux Base: martedì 15:00-18:00 > Incontro in sede: sabato 9:30-12.30 > > <========---------- Prima di scrivere in m-list per favore leggi il regolamento http://lugge.ziobudda.net/soci/manifesto.htm#list ----------========> Corso Linux Base: martedì 15:00-18:00 Incontro in sede: sabato 9:30-12.30