Campo AUTO INCREMENT SQL
L'auto-incremento genera un numero unico ogni volta che viene inserito un nuovo record nella tabella.
Campo AUTO INCREMENT
Di solito, desideriamo che il valore del campo chiave primaria venga creato automaticamente ogni volta che inseriamo un nuovo record.
Possiamo creare un campo auto-increment nel nostro elenco.
Sintassi per MySQL
La seguente istruzione SQL definisce la colonna "P_Id" nella tabella "Persons" come chiave primaria auto-incrementale:
CREATE TABLE Persons ( P_Id int NOT NULL AUTO_INCREMENT, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY (P_Id) )
MySQL utilizza la parola chiave AUTO_INCREMENT per eseguire il compito di auto-increment.
Per default, il valore di partenza di AUTO_INCREMENT è 1, e ogni nuovo record incrementa di 1.
Per far iniziare la sequenza AUTO_INCREMENT con un altro valore, utilizzare la seguente sintassi SQL:
ALTER TABLE Persons AUTO_INCREMENT=100
Per inserire un nuovo record nella tabella "Persons", non è necessario specificare un valore per la colonna "P_Id" (verrà aggiunto automaticamente un valore unico):
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
La seguente istruzione SQL inserirà una nuova registrazione nella tabella "Persons". "P_Id" verrà assegnato un valore unico. "FirstName" sarà impostato su "Bill", la colonna "LastName" sarà impostata su "Gates".
Sintassi per SQL Server
La seguente istruzione SQL definisce la colonna "P_Id" nella tabella "Persons" come chiave primaria auto-incrementale:
CREATE TABLE Persons ( P_Id int PRIMARY KEY IDENTITY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
MS SQL utilizza la parola chiave IDENTITY per eseguire il compito di auto-increment.
Per default, il valore di partenza di IDENTITY è 1, e ogni nuovo record incrementa di 1.
Per stabilire che la colonna "P_Id" inizi da 20 e incrementi di 10, sostituisci identity con IDENTITY(20,10):
Per inserire un nuovo record nella tabella "Persons", non è necessario specificare un valore per la colonna "P_Id" (verrà aggiunto automaticamente un valore unico):
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
La seguente istruzione SQL inserirà una nuova registrazione nella tabella "Persons". "P_Id" verrà assegnato un valore unico. "FirstName" sarà impostato su "Bill", la colonna "LastName" sarà impostata su "Gates".
Sintassi per Access
La seguente istruzione SQL definisce la colonna "P_Id" nella tabella "Persons" come chiave primaria auto-incrementale:
CREATE TABLE Persons ( P_Id int PRIMARY KEY AUTOINCREMENT, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
MS Access utilizza la parola chiave AUTOINCREMENT per eseguire il compito di auto-increment.
Per default, il valore di partenza di AUTOINCREMENT è 1, e ogni nuovo record incrementa di 1.
Per stabilire che la colonna "P_Id" inizi da 20 e incrementi di 10, sostituisci autoincrement con AUTOINCREMENT(20,10):
Per inserire un nuovo record nella tabella "Persons", non è necessario specificare un valore per la colonna "P_Id" (verrà aggiunto automaticamente un valore unico):
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
La seguente istruzione SQL inserirà una nuova registrazione nella tabella "Persons". "P_Id" verrà assegnato un valore unico. "FirstName" sarà impostato su "Bill", la colonna "LastName" sarà impostata su "Gates".
Sintassi per Oracle
Nel caso di Oracle, il codice è un po' più complesso.
Devi creare un oggetto sequence per creare campi auto-increment (che generano una sequenza di numeri).
Utilizzare la seguente sintassi CREATE SEQUENCE:
CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10
Il codice seguente crea un oggetto di sequenza chiamato seq_person, che parte da 1 e aumenta di 1. L'oggetto cache 10 valori per migliorare le prestazioni. L'opzione CACHE determina quante valori di sequenza devono essere memorizzati per migliorare la velocità di accesso.
Per inserire una nuova registrazione nella tabella "Persons", dobbiamo utilizzare la funzione nextval (che recupera il prossimo valore dalla sequenza seq_person):
INSERT INTO Persons (P_Id,FirstName,LastName) VALUES (seq_person.nextval,'Lars','Monsen')
La seguente istruzione SQL inserirà una nuova registrazione nella tabella "Persons". L'assegnazione di "P_Id" è il numero successivo della sequenza seq_person. "FirstName" sarà impostato su "Bill", la colonna "LastName" sarà impostata su "Gates".