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. 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).
m. Enrico wrote:
Ragazzi ho un problemino:Ho una tabella M diciamo "master" in cui ho un progressivo serial ad esempio:M ( prog_M serial, campo1,.....,campo N) e una tabella D "detail" fatta così (prog_M,n_riga, etc....)io vorrei generare una procedura che mi generi un progressivo di riga n_riga sulla tabella detail D correlata al valore di prog_M, mi spiego con un esempio:Valore di prog_M = 1 ----------------- Prog_M n_riga 1 1 1 2 1 3 Valore di prog_M = 2 ----------------- Prog_M n_riga 2 1 2 2 2 3Insomma un progressivo di riga che però tenga conto del valore del progressivo della tabella a cui il progressivo di riga è correlato.Grazie a tutti Enrico _______________________________________________ Postgresql-it mailing list Postgresql-it@xxxxxxxxxxxxxxxxx http://www.linuxtime.it/mailman/listinfo/postgresql-it