[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Postgresql-it] Progressivi di riga



max jacob wrote:

devi gestire accessi concorrenti? se no, allora basta che fai una procedura con
   select max( n_riga ) + 1 from D where Prog_M = 1;
altrimenti, se vuoi essere transaction safe ma non te ne frega niente di avere, eventualmente, dei "buchi" nel tuo progressivo n_riga (avere, magari, 1, 2, 4, 5 ...), puoi creare un trigger sulla tabella M che crea una sequence per ogni nuovo prog_M (e le chiami tipo seq_m_1, seq_m_2 etc.), dopodiché scrivi un trigger sulla tabella D in cui vai a leggere dalla sequence corretta per valorizzare il campo n_riga.

In teoria ne me ne frega nulla del progressivo..............

se invece vuoi essere transaction safe e non avere buchi nel progressivo, direi che, almeno su postgres <=7.4, non c'è modo di farlo se non scrivendo qualcosa in C. se hai la possibilità di importare delle funzioni in C (ossia: se hai i diritti necessari sul tuo database), io ho fatto un generatore di contatori che sono transaction safe ma garantiscono la progressività in C per mio uso e consumo e che funziona. nel caso ti serva e non trovi altra soluzione te lo passo volentieri (e per par condicio a chiuque sia interessato, of course).

........ però mi piacerebbe vedere il codice C per imparare.Per quanto riguarda i diritti del db non ci sono problemi l'ho ricompilato io il sorgente di Postgres ;)

e come al solito grazie per i consigli.

Ciao Enrico