Kolumna automatycznego przyrostu jest dość powszechnym wymogiem w kodowaniu. Oto kilka sposobów na uzyskanie tego w Oracle
Automatyczny przyrost w Oracle
Ta funkcja (kolumna automatycznego przyrostu Oracle — sekwencja jako wartość domyślna) nie jest do tej pory obecna w bazie danych Oracle. Ale dzięki 12c Oracle jest w stanie to zapewnić.
Załóżmy, że chcemy ustawić tabelę wyroczni, w której sekwencja powinna być automatycznie zwiększana przy wstawianiu . Można to osiągnąć na wiele sposobów
Opcja 1
Przed Oracle 12c musimy użyć przed wstawieniem wyzwalaczy, aby to osiągnąć
utwórz tabelę test_lab(numer identyfikatora podstawowego nazwa klucza varchar (10));utwórz sekwencję test_lab_seq start z 1 przyrostem o 1 nocycle;utwórz lub zamień wyzwalacz test_lab_bef_autobefore wstaw w test_labdla każdego wierszabeginselect test_lab_seq.nextval do :new.idfrom dual;end; /
lub
utwórz lub zamień wyzwalacz test_lab_bef_auto
przed wstawieniem w test_lab
dla każdego wiersza
begin
:new.id :=test_lab_seq.nextval;
end;
/
Możemy określić, kiedy identyfikator jest pusty w wyzwalaczach, aby uniknąć błędów, gdy instrukcja INSERT ma wartość kolumny identyfikatora
wstaw do wartości test_lab ('john');wstaw do wartości test_lab ('scott');wstaw do wartości test_lab ('bill');wstaw do wartości test_lab ('tom');wstaw do wartości test_lab ('Duke ');commit;wybierz * z test_lab;
Opcja 2:
Dzięki Oracle 12c możemy bezpośrednio przypisać sekwencję nextval jako wartość domyślną dla kolumny, więc nie musisz już tworzyć wyzwalacza, aby wypełnić kolumnę następną wartością sekwencji, wystarczy zadeklarować ją za pomocą definicję tabeli.
utwórz sekwencję test_lab_seq start z przyrostem 1 o 1 nocycle;utwórz tabelę test_lab(numer identyfikacyjny domyślny klucz podstawowy test_lab_seq.nextval);wstaw do wartości test_lab ('Cat1');wstaw do wartości test_lab ('Cat2');wstaw do wartości test_lab ('Cat3');wstaw do wartości test_lab ('Cat4');wstaw do wartości test_lab ('Cat5');commit;wybierz * z test_lab;
Opcja 3
Dzięki 12c możemy korzystać z funkcji identyfikacji
- Widać, że ograniczenie NOT NULL jest automatycznie nakładane na kolumnę tożsamości
- Oracle wewnętrznie używa sekwencji do wypełniania wartości kolumny auto-inkrementacji.
wstaw do wartości test_lab ('Londyn');wstaw do wartości test_lab ('Nowy Jork');wstaw do wartości test_lab ('Tokio');wstaw do wartości test_lab ('Delhi');wstaw do wartości test_lab (' Bangalore');commit;wybierz * z test_lab;
Powiązane artykuły Oracle SQL
jak utworzyć tabelę w Oracle
Jak tworzyć widoki Oracle
Największe zapytania i podział na strony
jak pisać zapytania sql
Przetwarzanie dekodowania Oracle sql