sammanfattning: i den här handledningen lär du dig hur du använder Oracle identity column för att enkelt definiera en automatisk genererad numerisk kolumn för en tabell.
introduktion till Oracle identity column
Oracle 12c introducerade ett nytt sätt som låter dig definiera en identitetskolumn för en tabell, som liknar kolumnenAUTO_INCREMENT
I MySQL ellerIDENTITY
I SQL Server.
kolumnen identitet är mycket användbar för kolumnen surrogat primär nyckel., När du infogar en ny rad i kolumnen identitet genererar Oracle automatiskt och sätter in ett sekventiellt värde i kolumnen.
för att definiera en identitetskolumn använder du identitetsklausulen som visas nedan:
För det första är nyckelordet GENERATED
obligatoriskt.
För det andra kan du ange ett alternativ för att generera identitetsvärden:
-
GENERATED ALWAYS
: Oracle genererar alltid ett värde för identitetskolumnen. Om du försöker infoga ett värde i kolumnen identitet uppstår ett fel., GENERATED BY DEFAULT
: Oracle genererar ett värde för identitetskolumnen om du inte anger något värde. Om du anger ett värde infogar Oracle det värdet i kolumnen identitet. För det här alternativet kommer Oracle att utfärda ett fel om du infogar ett NULL-värde i identitetskolumnen.GENERATED BY DEFAULT ON NULL
: Oracle genererar ett värde för identitetskolumnen om du anger ett nollvärde eller inget värde alls.
tredje, Du kan ha ett antal alternativ för identitetskolumnen.,
START WITH initial_value
styr det ursprungliga värdet som ska användas för identitetskolumnen. Standardvärdet är 1.INCREMENT BY internval_value
definierar intervallet mellan genererade värden. Standardinställningen är 1.CACHE
definierar ett antal värden som Oracle ska generera i förväg för att förbättra prestanda. Du använder det här alternativet för kolumnen som har ett stort antal insatser.
Oracle identity column examples
låt oss ta några exempel på att använda Oracle identity columns.,
A) genererade alltid exempel
följande uttalande skapar en tabell med namnet identity_demo
som består av en identitetskolumn:
följande uttalande infogar en ny rad i tabellen identity_demo
:
eftersom vi inte angav ett värde för kolumnen id
genererade Oracle automatiskt ett sekventiellt värde från och med 1.,
följande uttalande försöker infoga ett värde i kolumnen id
identitet:
Oracle utfärdade ett fel:
eftersom id-kolumnen definierades som GENERATED ALWAYS
kunde den inte acceptera något angivet värde.,
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.,
följande uttalande infogar en ny rad i kolumnenidentity_demo
tabell med ett angivet värde för kolumnenid
:
i det här exemplet använde Oracle det angivna värdet och infogade det i tabellen.,Först återskapar du kolumnen identity_demo
vars id
definieras som identitetskolumn med det ursprungliga värdet börjar från 100:
För det andra, sätt in en rad i tabellen identity_demo
:
tredje, frågedata från identity_demo
tabell:
som du kan se är det ursprungliga värdet för id
kolumnen är 100 som anges i identitetsklausulen.,
E) ökning efter optionsexempel
ändra först ID-kolumnen iidentity_demo
– tabellen som innehåller bådeSTART WITH
ochINCREMENT BY
– alternativen.
För det andra, sätt in två rader i tabellen identity_demo
:
För det tredje, sökdata från tabellen för att verifiera insatserna: