logo

Numer seryjny PostgreSQL

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:

    MAŁY SERIAL SERYJNY DUŻY SERIAL

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:

Numer seryjny PostgreSQL

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:

Numer seryjny PostgreSQL

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:

Numer seryjny PostgreSQL

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:

Numer seryjny PostgreSQL

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:

Numer seryjny PostgreSQL

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 :

Numer seryjny PostgreSQL

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:

Numer seryjny PostgreSQL

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.

Numer seryjny PostgreSQL

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:

Numer seryjny PostgreSQL

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.

Numer seryjny PostgreSQL

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:

Numer seryjny PostgreSQL

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.