Mondi su mondi, sistemi di sistemi.

PostgreSQL: generare delle sequence senza salti

Le sequence sono un supporto, fornito dalla stragrande maggioranza dei database, per generare dei valori numerici univoci, che pos­sono poi essere usati per identificare ogni singola riga di una tabella. In PostgreSQL, la sequence risulta in pratica essere un numero intero sempre crescente e che non viene più riutilizzato: se il numero n, che otteniamo dal sistema, viene utilizzato in una transazione che poi sarà abortita, il pros­simo numero sarà comunque almeno n+1.

Ci sono, però, situazioni in cui non è sufficiente che la numerazione sia sempre crescente ma che non pre­senti “buchi”; e questo non è pos­sibile “right out of the box” con PostgreSQL.

Che fare?

In questo articolo, la soluzione proposta consiste nel creare una tabella di appoggio, che una funzione si occuperà di aggiornare; questa funzione sarà quella usata come default per la tabella vera e propria che, come è lecito aspettarsi, non consentirà cancellazioni.

I dettagli sono nell’articolo e dovrebbero essere piuttosto chiari; in casi di dubbi i commenti sono a disposizione.

Per proseguire

Commenti e trackback sono disabilitati.