Faq/Base/127/it

Come posso riavviare la numerazione continua per una chiave primaria?
Contesto: nel corso di aggiunte ed eliminazioni di righe in una tabella i valori numerici della chiave primaria diventeranno non sequenziali. Sebbene ciò abbia un impatto minimo o nullo sull'operazione del database stesso, è possibile ripristinare la numerazione continua.

Questa FAQ non considera l'istanza in cui una o più relazioni sono state definite usando questa chiave per collegare questa tabella ad altre tabelle, quando questi dati saranno presenti anche in quelle tabelle. Naturalmente, in quel caso, dovrete modificare anche i dati nelle altre tabelle o le relazioni tra le tabelle verranno interrotte.

A parte questo caso non considerato, si presentano varie situazioni: 

La chiave primaria viene generata automaticamente e la tabella non include i dati
Eseguire il seguente comando SQL dal menu "Utilità -> SQL" 

ALTER TABLE 'tablename' ALTER COLUMN 'primary key name' RESTART WITH 1

La chiave primaria viene generata automaticamente e la tabella contiene dati
Create la seguente numerazione: la tabella contiene 20 righe, ad esempio rimuovendo l'ultima riga, riavviando la numerazione su 15.  <dl><dd>Utilizzate il comando SQL sopra, modificando il valore iniziale su 15. </dd></dl> Rinumerazione completa (modifica delle chiavi esistenti): utilizzate la procedura guidata "copia tabella". </li></ul> <dl><dd>Copiate e incollate la tabella o spostatela leggermente con il mouse: apparirà la procedura guidata. </dd></dl> <ol>Fornite un nuovo nome per la tabella </li>Scegliete l'opzione Struttura e dati, fate clic su Avanti </li>Selezionate tutti i campi tranne la chiave primaria </li>Fate clic su Crea. LibreOffice suggerirà di creare una chiave primaria: scegliete No </li>La nuova tabella è stata creata. Modificatela aggiungendo un campo chiave primaria, generate automaticamente il valore, salvate. </li></ol>

Il processo sopra descritto per immagini: </li></ul>

La chiave primaria non è definita come generata automaticamente e i dati non contengono alcun dato
Non è richiesta alcuna modifica: il campo è modificabile e può avere qualsiasi valore desiderato. </li></ul>

La chiave primaria non è definita come generata automaticamente e la tabella contiene dati
Poiché la chiave primaria non viene generata automaticamente, il sistema non genera valori, sequenziali o di altro tipo. Tuttavia, possiamo creare un contatore per questo in un comando SQL eseguito dal menu Utilità > SQL </li></ul> Commando SQL: </li></ul>

CREATE SEQUENCE NUMENREG AS INTEGER UPDATE "T_A" SET ID = NEXT VALUE FOR "NUMENREG" DROP SEQUENCE "NUMENREG"