W tej części zrozumiemy działanie Numer seryjny PostgreSQL pseudotyp, który pozwala nam zdefiniować kolumny z automatycznym przyrostem w tabelach. I my też widzimy przykłady z Pseudotyp szeregowy PostgreSQL .
Co to jest pseudotyp PostgreSQL Serial?
W PostgreSQL mamy jeden szczególny rodzaj generatora obiektów bazy danych, znany jako Seryjny , do czego jest przyzwyczajony utwórz ciąg liczb całkowitych które są często używane jako Główny klucz w stole.
Sekwencję można wygenerować za pomocą Pseudotyp SERIAL , podczas gdy tworzymy nową tabelę, jak widać w następującym poleceniu:
CREATE TABLE table_name( ID SERIAL );
PostgreSQL wykonuje następujące czynności, jeśli udostępnimy plik Pseudotyp SERIAL do ID kolumna:
klucz ins
- Po pierwsze, PostgreSQL utworzy obiekt sekwencji, a następnie ustali następną wartość utworzoną przez sekwencję jako predefiniowaną wartość konkretnej kolumny.
- Następnie PostgreSQL ulepszy a NIE NULL ograniczenie do Kolumna identyfikacyjna ponieważ sekwencja zawsze daje liczbę całkowitą, która jest a wartość różna od null .
- W końcu PostgreSQL udostępni właścicielowi sekwencji plikowi kolumna identyfikacyjna; jako wyjście, obiekt sekwencji jest usuwany, gdy tabela lub Kolumna identyfikacyjna zostaje upuszczony.
Uwaga: możemy użyć obu poleceń do określenia pseudotypu Serial, ponieważ oba poniższe polecenia są do siebie podobne.
CREATE TABLE table_name( ID SERIAL );
CREATE SEQUENCE table_name_ID_seq; CREATE TABLE table_name ( ID integer NOT NULL DEFAULT nextval('table_name_ID_seq') ); ALTER SEQUENCE table_name_ID_seq OWNED BY table_name.ID;
The Pseudotyp szeregowy PostgreSQL został podzielony na trzy typy, które są następujące:
Mamy następującą tabelę, która zawiera wszystkie Pseudotyp seryjny specyfikacja obsługiwana przez PostgreSQL:
Nazwa | Rozmiar pamięci | Zakres |
---|---|---|
MAŁY SERIAL | 2 bajty | 1 do 32767 |
SERYJNY | 4 bajty | 1 do 2147483647 |
DUŻY SERIAL | 8 bajtów | 1 do 9223372036854775807 |
Składnia pseudotypu PostgreSQL Serial
Składnia PostgreSQL Pseudotyp seryjny następująco:
variable_name SERIAL
Przykłady typu PostgreSQL SERIAL
Zobaczmy różne przykłady, aby zrozumieć, jak Działa pseudotyp PostgreSQL Serial .
Uwaga: Możemy zdefiniować ograniczenie PRIMARY KEY dla kolumny SERIAL, ponieważ typ SERIAL nie tworzy pośrednio indeksu w kolumnie ani nie czyni tej kolumny kolumną klucza podstawowego.
Tworzymy jedną nową tabelę za pomocą polecenia CREATE i wstawiamy niektóre wartości za pomocą polecenia INSERT.
W poniższym przykładzie używamy TWORZYĆ polecenie wygenerowania a Samochody stół do Baza organizacji:
CREATE TABLE Cars( Car_id SERIAL PRIMARY KEY, Car_name VARCHAR NOT NULL, Car_model VARCHAR NOT NULL );
Wyjście
The Samochody tabela została pomyślnie utworzona po wykonaniu powyższych poleceń, jak pokazano na poniższym zrzucie ekranu:
Kiedyś Samochody tabela została wygenerowana, możemy wstawić do niej pewne wartości za pomocą polecenia INSERT. I możemy skorzystać z DOMYŚLNY słowo kluczowe w poleceniu INSERT lub pomiń nazwę kolumny (Identyfikator_samochodu) .
INSERT INTO Cars(Car_name, Car_model) VALUES('Porche','911 Carrera');
Wyjście
Po wykonaniu powyższego polecenia otrzymamy następujący komunikat, a wartość została pomyślnie wstawiona do Samochody tabela:
LUB Używając DOMYŚLNE słowo kluczowe z nazwą kolumny (Identyfikator_samochodu):
INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8');
Wyjście
Po wykonaniu powyższego polecenia otrzymamy następujący komunikat; wartość została pomyślnie wstawiona do Samochody tabela:
Jak widać na powyższym zrzucie ekranu, PostgreSQL wstawił dwa wiersze do pliku Samochody stół z Identyfikator_samochodu wartości kolumn są 1 i 2 .
Po utworzeniu i wstawieniu pliku Samochody wartości tabeli, użyjemy metody WYBIERAĆ polecenie zwraca wszystkie wiersze pliku Samochody tabela:
SELECT * FROM Cars;
Wyjście
Po pomyślnym wykonaniu powyższego polecenia otrzymamy następujący wynik:
Możemy skorzystać z pg_get_serial_sequence() funkcja, aby uzyskać nazwę sekwencji a SERYJNY kolumna w określonej tabeli, jak widać w poniższej składni:
sortowanie na liście tablic w Javie
pg_get_serial_sequence('table_name','column_name')
Aby uzyskać Aktualna wartość utworzonej przez sekwencję, możemy przekazać nazwę sekwencji do funkcji currval().
W poniższym przykładzie użyliśmy zakrzywienie() funkcja zwracająca bieżącą wartość utworzoną przez Samochody tabela Samochód_id_sek obiekt:
SELECT currval(pg_get_serial_sequence('Cars', 'car_id'));
Wyjście
Po zaimplementowaniu powyższego polecenia otrzymamy poniższe dane wyjściowe:
Możemy skorzystać z ZWRACAJĄCY Car_id klauzulę do polecenia INSERT, jeśli chcemy uzyskać wartości utworzone przez sekwencję podczas wstawiania nowego wiersza do tabeli.
Poniższe polecenie służy do wstawienia nowego wiersza do pliku Samochody table i zwraca rekordy wygenerowane dla Identyfikator_samochodu kolumna.
INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id;
Wyjście
Po wykonaniu powyższego polecenia otrzymamy następujące dane wyjściowe, które zwracają Identyfikator_samochodu Jak 3 :
Notatka:
- Jak zrozumieliśmy powyżej, generator sekwencji operacja nie jest bezpieczna dla transakcji, co oznacza, że każdy użytkownik otrzyma inną wartość jeśli dwie równoległe bazy danych połączenia próbują uzyskać następną wartość z sekwencji.
- A numer kolejny tego użytkownika będzie bezczynny i tworzy lukę w sekwencji if jeden użytkownik może wycofać transakcję .
Przykład2
Zobaczmy jeszcze jeden przykład, aby się nauczyć Pseudotyp seryjny szczegółowo.
Zamierzamy więc utworzyć kolejną nową tabelę jako plik a Warzywa tabelę za pomocą polecenia CREATE w podobny Baza danych to jest Organizacja z Identyfikator warzyw kolumna jako SERYJNY pseudotyp.
CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL );
Wyjście
rodzaje uczenia maszynowego
The Warzywa tabela została pomyślnie utworzona po wykonaniu powyższych poleceń, jak pokazano na poniższym zrzucie ekranu:
Kiedyś Warzywa tabela została wygenerowana, wstawimy do niej pewne wartości za pomocą polecenia INSERT, pomijając Identyfikator warzyw kolumna, jak pokazano w poniższym poleceniu:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Broccoli','Spring');
Wyjście
struny w c
Po wykonaniu powyższego polecenia otrzymamy następujący komunikat: wartość została pomyślnie wstawiona do Warzywa tabela.
Lub możemy również użyć Domyślny słowo kluczowe i używa Identyfikator warzyw kolumna, jak pokazano w następującym poleceniu:
INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter');
Wyjście
Po wykonaniu powyższego polecenia otrzymamy poniższy komunikat, który mówi, że albo możemy użyć Domyślne słowo kluczowe albo zignoruj nazwę kolumny , otrzymamy podobny wynik:
Dlatego dodamy więcej wartości do pliku Samochody tabeli za pomocą polecenia:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Jalapeno Peppers','Fall'), ('Cucumbers','Summer'), ('Winter Squash','Winter'), ('Snow Peas','Spring'), ('Black Radish','All seasons'), ('Pumpkin','Fall');
Wyjście
Po wykonaniu powyższego polecenia otrzymamy poniższy komunikat informujący, że wartość została pomyślnie wstawiona do pliku Warzywa tabela.
Po utworzeniu i wstawieniu pliku Warzywa wartości tabeli, użyjemy metody WYBIERAĆ polecenie zwrócenia wszystkich wierszy pliku Warzywa tabela:
SELECT * FROM Vegetables;
Wyjście
Po pomyślnym wdrożeniu powyższego polecenia otrzymamy poniższe dane wyjściowe:
Przegląd
w Pseudotyp szeregowy PostgreSQL W tej sekcji poznaliśmy funkcjonalność pseudotypu Serial, która jest najczęściej używana do tworzenia plików automatyczne podwyżki wartość kolumny dla konkretnej tabeli.