Pole AUTO INCREMENT SQL
Pole AUTO PRZYROST
Auto-inkrementacja umożliwia automatyczne generowanie unikalnego numeru po wstawieniu nowego rekordu do tabeli.
Często jest to pole klucza podstawowego, które chcielibyśmy, aby było tworzone automatycznie za każdym razem, gdy wstawiamy nowy rekord.
Składnia MySQL
Poniższa instrukcja SQL definiuje kolumnę „Personid” jako automatyczne pole klucza podstawowego w tabeli „Osoby”:
CREATE TABLE Persons
(
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (Personid)
);
MySQL używa AUTO_INCREMENT
słowa kluczowego do wykonania funkcji autoinkrementacji.
Domyślnie wartość początkowa dla AUTO_INCREMENT
wynosi 1 i będzie zwiększana o 1 dla każdego nowego rekordu.
Aby AUTO_INCREMENT
sekwencja zaczynała się od innej wartości, użyj następującej instrukcji SQL:
ALTER TABLE Persons AUTO_INCREMENT=100;
Aby wstawić nowy rekord do tabeli „Osoby”, NIE będziemy musieli podawać wartości dla kolumny „Personid” (unikalna wartość zostanie dodana automatycznie):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Powyższa instrukcja SQL wstawia nowy rekord do tabeli „Osoby”. Kolumnie „Personid” zostanie przypisana unikalna wartość. Kolumna „FirstName” zostanie ustawiona na „Lars”, a kolumna „LastName” na „Monsen”.
Składnia dla SQL Server
Poniższa instrukcja SQL definiuje kolumnę „Personid” jako automatyczne pole klucza podstawowego w tabeli „Osoby”:
CREATE TABLE Persons
(
Personid int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
MS SQL Server używa IDENTITY
słowa kluczowego do wykonania funkcji autoinkrementacji.
W powyższym przykładzie wartość początkowa dla
IDENTITY
wynosi 1 i będzie zwiększana o 1 dla każdego nowego rekordu.
Wskazówka: aby określić, że kolumna „Personid” powinna zaczynać się od wartości 10 i zwiększać się o 5, zmień ją na IDENTITY(10,5)
.
Aby wstawić nowy rekord do tabeli „Osoby”, NIE będziemy musieli podawać wartości dla kolumny „Personid” (unikalna wartość zostanie dodana automatycznie):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Powyższa instrukcja SQL wstawia nowy rekord do tabeli „Osoby”. Kolumnie „Personid” zostanie przypisana unikalna wartość. Kolumna „FirstName” zostanie ustawiona na „Lars”, a kolumna „LastName” na „Monsen”.
Składnia programu Access
Poniższa instrukcja SQL definiuje kolumnę „Personid” jako automatyczne pole klucza podstawowego w tabeli „Osoby”:
CREATE TABLE Persons
(
Personid AUTOINCREMENT PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
MS Access używa AUTOINCREMENT
słowa kluczowego do wykonania funkcji automatycznego zwiększania.
Domyślnie wartość początkowa dla AUTOINCREMENT
wynosi 1 i będzie zwiększana o 1 dla każdego nowego rekordu.
Wskazówka: aby określić, że kolumna „Personid” powinna zaczynać się od wartości 10 i zwiększać się o 5, zmień wartość autoinkrementacji na
AUTOINCREMENT(10,5)
.
Aby wstawić nowy rekord do tabeli „Osoby”, NIE będziemy musieli podawać wartości dla kolumny „Personid” (unikalna wartość zostanie dodana automatycznie):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Powyższa instrukcja SQL wstawia nowy rekord do tabeli „Osoby”. Kolumnie „Personid” zostanie przypisana unikalna wartość. Kolumna „FirstName” zostanie ustawiona na „Lars”, a kolumna „LastName” na „Monsen”.
Składnia Oracle
W Oracle kod jest nieco bardziej skomplikowany.
Będziesz musiał utworzyć pole auto-inkrementacji z obiektem sekwencji (ten obiekt generuje sekwencję numerów).
Użyj następującej CREATE SEQUENCE
składni:
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 będzie zwiększany o 1. Będzie również buforować do 10 wartości wydajności. Opcja pamięci podręcznej określa, ile wartości sekwencji będzie przechowywanych w pamięci w celu szybszego dostępu.
Aby wstawić nowy rekord do tabeli „Osoby”, będziemy musieli użyć funkcji nextval (ta funkcja pobiera następną wartość z sekwencji seq_person):
INSERT INTO Persons (Personid,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen');
Powyższa instrukcja SQL wstawia nowy rekord do tabeli „Osoby”. Kolumnie „Personid” zostanie przypisana następna liczba z sekwencji sekw_osoba. Kolumna „FirstName” zostanie ustawiona na „Lars”, a kolumna „LastName” na „Monsen”.