Podsumowanie: w tym samouczku dowiesz się, jak używać kolumny Oracle identity do łatwego definiowania automatycznie generowanej kolumny numerycznej dla tabeli.
Wprowadzenie do kolumny Oracle identity
Oracle 12c wprowadził nowy sposób definiowania kolumny identity dla tabeli, który jest podobny do kolumnyAUTO_INCREMENT
w MySQL lubIDENTITY
w kolumnie SQL Server.
kolumna identity jest bardzo przydatna dla kolumny klucza głównego zastępczego., Po wstawieniu nowego wiersza do kolumny tożsamość Oracle automatycznie generuje i wstawia do kolumny wartość sekwencyjną.
aby zdefiniować kolumnę tożsamości, należy użyć klauzuli tożsamości, jak pokazano poniżej:
Po Pierwsze, słowo kluczowe GENERATED
jest obowiązkowe.
Po drugie, możesz określić opcję generowania wartości tożsamości:
-
GENERATED ALWAYS
: Oracle zawsze generuje wartość dla kolumny tożsamości. Próba Wstawienia wartości do kolumny identity spowoduje błąd., -
GENERATED BY DEFAULT
: Oracle generuje wartość kolumny identity, jeśli nie podasz wartości. Jeśli podasz wartość, Oracle wstawi tę wartość do kolumny tożsamość. W przypadku tej opcji Oracle wyświetli błąd, jeśli wstawisz wartość NULL do kolumny tożsamość. -
GENERATED BY DEFAULT ON NULL
: Oracle generuje wartość kolumny identity, jeśli podasz wartość NULL lub w ogóle jej nie ma.
Po trzecie, możesz mieć wiele opcji dla kolumny tożsamość.,
START WITH initial_value
kontroluje wartość początkową używaną dla kolumny identity. Domyślną wartością początkową jest 1.INCREMENT BY internval_value
określa odstęp pomiędzy wygenerowanymi wartościami. Domyślnie wartością interwału jest 1.CACHE
definiuje liczbę wartości, które Oracle powinien wygenerować wcześniej, aby poprawić wydajność. Ta opcja jest używana dla kolumny, która ma dużą liczbę wstawek.
przykłady kolumn Oracle identity
weźmy kilka przykładów użycia kolumn Oracle identity.,
A) zawsze wygenerowany przykład
następująca instrukcja tworzy tabelę o nazwie identity_demo
która składa się z kolumny tożsamości:
następująca instrukcja wstawia nowy wiersz do tabeli identity_demo
tabela:
iv id ponieważ nie podaliśmy wartości dla kolumnyid
, Oracle automatycznie wygenerowało wartość sekwencyjną zaczynającą się od 1.,
poniższe polecenie próbuje wstawić wartość do id
kolumna tożsamości:
Oracle wydało błąd:
ponieważ kolumna id została zdefiniowana jako GENERATED ALWAYS
, nie mogła zaakceptować żadnej podanej wartości.,
B) GENERATED BY DEFAULT example
Let’s change the id
column to GENERATED BY DEFAULT
:
The following statement inserts a new row into the identity_demo
table:
It worked as expected.,
następująca instrukcja wstawia nowy wiersz do tabeli identity_demo
z podaną wartością dla kolumny id
:
w tym przykładzie firma Oracle użyła podanej wartości i wstawiła ją do tabeli.,Po pierwsze, odtwarza tabelę identity_demo
, której kolumna id
jest zdefiniowana jako kolumna tożsamości z wartością początkową zaczynającą się od 100:
Po Drugie, Wstaw wiersz do identity_demo
tabela:
Po trzecie, zapytanie danych z identity_demo
tabela:
jak widać, początkowa wartość kolumny id
wynosi 100, jak określono w klauzuli tożsamości.,
E) przyrost przez przykład opcji
najpierw zmień kolumnę id w identity_demo
tabeli, która zawiera obie opcje START WITH
I INCREMENT BY
.
Po Drugie, Wstaw dwa wiersze do identity_demo
tabela:
Po Trzecie, zapytaj dane z tabeli, aby zweryfikować wstawki:
jak widać, pierwszy wiersz ma wartość ID 10. Drugi wiersz ma wartość id 20., To jest to, co zdefiniowaliśmy dla kolumny id, która powinna zaczynać się od 10 i zwiększać o 10 dla nowego wiersza.
Oracle identity column restrictions
kolumny identity podlegają następującym ograniczeniom:
- każda tabela ma jedną i tylko jedną kolumnę identity.
- typ danych kolumny identity musi być liczbowym typem danych. typ danych zdefiniowany przez użytkownika nie może być używany z klauzulą tożsamości.
- kolumna tożsamości nie jest dziedziczona przez instrukcję
CREATE TABLE AS SELECT
., - kolumna identity nie może mieć innego ograniczenia
DEFAULT
. - algorytm szyfrowania dla zaszyfrowanych kolumn tożsamości można wywnioskować, dlatego powinieneś użyć silnego algorytmu szyfrowania.
- ograniczenie wbudowane kolumny identity nie może być sprzeczne z ograniczeniem
NOT NULL
INOT DEFERRABLE
określonym w klauzuli identity.
w tym samouczku nauczyłeś się korzystać z kolumny Oracle identity, która umożliwia łatwe definiowanie automatycznie generowanej kolumny numerycznej dla tabeli.,
- czy ten tutorial był pomocny?
- YesNo