Pole AUTO INCREMENT SQL
Auto-increment tworzy unikalną liczbę, gdy nowy rekord jest dodawany do tabeli.
Pole AUTO INCREMENT
Zwykle chcemy, aby wartość pola kluczowego była automatycznie generowana przy każdym wstawianiu nowego rekordu.
Możemy utworzyć pole auto-increment w tabeli.
Gramatyka dostępna w MySQL
Poniższe polecenie SQL definiuje kolumnę "P_Id" w tabeli "Persons" jako auto-incrementujący klucz główny:
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 używa klucza AUTO_INCREMENT do wykonywania zadania auto-increment.
Domyślnie, wartość początkowa AUTO_INCREMENT wynosi 1, a każda nowa rekord zwiększa się o 1.
Aby zainicjalizować sekwencję AUTO_INCREMENT inną wartością, użyj poniższego składni SQL:
ALTER TABLE Persons AUTO_INCREMENT=100
Aby wstawić nowy rekord do tabeli "Persons", nie musimy określić wartości dla kolumny "P_Id" (zostanie automatycznie dodana unikalna wartość):
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
Powyższy zapis SQL wstawia nowy wiersz do tabeli "Persons". "P_Id" zostanie przypisany unikalnej wartości. "FirstName" zostanie ustawiony na "Bill", a kolumna "LastName" zostanie ustawiona na "Gates".
Gramatyka dostępna w SQL Server
Poniższe polecenie SQL definiuje kolumnę "P_Id" w tabeli "Persons" jako auto-incrementujący klucz główny:
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 używa klucza IDENTITY do wykonywania zadania auto-increment.
Domyślnie, wartość początkowa IDENTITY wynosi 1, a każda nowa rekord zwiększa się o 1.
Aby określić, że kolumna "P_Id" zaczyna się od 20 i zwiększa się o 10, zmień identity na IDENTITY(20,10):
Aby wstawić nowy rekord do tabeli "Persons", nie musimy określić wartości dla kolumny "P_Id" (zostanie automatycznie dodana unikalna wartość):
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
Powyższy zapis SQL wstawia nowy wiersz do tabeli "Persons". "P_Id" zostanie przypisany unikalnej wartości. "FirstName" zostanie ustawiony na "Bill", a kolumna "LastName" zostanie ustawiona na "Gates".
Gramatyka dostępna w Access
Poniższe polecenie SQL definiuje kolumnę "P_Id" w tabeli "Persons" jako auto-incrementujący klucz główny:
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 używa klucza AUTOINCREMENT do wykonywania zadania auto-increment.
Domyślnie, wartość początkowa AUTOINCREMENT wynosi 1, a każda nowa rekord zwiększa się o 1.
Aby określić, że kolumna "P_Id" zaczyna się od 20 i zwiększa się o 10, zmień autoincrement na AUTOINCREMENT(20,10):
Aby wstawić nowy rekord do tabeli "Persons", nie musimy określić wartości dla kolumny "P_Id" (zostanie automatycznie dodana unikalna wartość):
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
Powyższy zapis SQL wstawia nowy wiersz do tabeli "Persons". "P_Id" zostanie przypisany unikalnej wartości. "FirstName" zostanie ustawiony na "Bill", a kolumna "LastName" zostanie ustawiona na "Gates".
Składnia używana w Oracle
W Oracle kod jest nieco bardziej złożony.
Musisz utworzyć obiekt sekwencji, aby utworzyć pole autoinkrementacyjne (obiekt generuje sekwencję liczb).
Użyj poniższego składni CREATE SEQUENCE:
CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10
Powyższy kod tworzy obiekt sekwencji o nazwie seq_person, który zaczyna się od 1 i zwiększa się o 1. Obiekt ten buforuje 10 wartości, aby poprawić wydajność. Opcja CACHE określa, ile wartości sekwencji należy przechowywać, aby poprawić szybkość dostępu.
Aby wstawić nowy wiersz do tabeli "Persons", musimy użyć funkcji nextval (funkcja pobiera następną wartość z sekwencji seq_person):
INSERT INTO Persons (P_Id,FirstName,LastName) VALUES (seq_person.nextval,'Lars','Monsen')
Poniższy zapis SQL wstawia nowy wiersz do tabeli "Persons". Przypisanie do "P_Id" pochodzi z następnego liczby z sekwencji seq_person. "FirstName" zostanie ustawiony na "Bill", a kolumna "LastName" zostanie ustawiona na "Gates".