samenvatting: in deze tutorial leert u hoe u de Oracle identity column kunt gebruiken om eenvoudig een automatisch gegenereerde numerieke kolom voor een tabel te definiëren.
Introduction to Oracle identity column
Oracle 12c introduceerde een nieuwe manier waarmee u een identiteitskolom kunt definiëren voor een tabel, die vergelijkbaar is met de AUTO_INCREMENT
kolom in MySQL of IDENTITY
kolom in SQL Server.
de kolom identiteit is zeer nuttig voor de kolom met de surrogaathoofdsleutel., Wanneer u een nieuwe rij invoegt in de kolom identiteit, genereert Oracle automatisch een opeenvolgende waarde en voegt deze in de kolom in.
om een identiteitskolom te definiëren, gebruikt u de identiteitsclausule zoals hieronder getoond:
eerst is het sleutelwoord GENERATED
verplicht.
ten tweede kunt u een optie opgeven om identiteitswaarden te genereren:
-
GENERATED ALWAYS
: Oracle genereert altijd een waarde voor de kolom identiteit. Poging om een waarde in te voegen in de kolom identiteit zal een fout veroorzaken., -
GENERATED BY DEFAULT
: Oracle genereert een waarde voor de kolom identiteit als u geen waarde opgeeft. Als u een waarde opgeeft, voegt Oracle die waarde in de kolom identiteit in. Voor deze optie geeft Oracle een fout uit als u een NULL-waarde invoegt in de kolom identiteit. -
GENERATED BY DEFAULT ON NULL
: Oracle genereert een waarde voor de kolom identiteit als u een NULL-waarde of helemaal geen waarde opgeeft.
Ten derde kunt u een aantal opties hebben voor de kolom identiteit.,
-
START WITH initial_value
bepaalt de initiële waarde voor de kolom identiteit. De standaard beginwaarde is 1. -
INCREMENT BY internval_value
definieert het interval tussen gegenereerde waarden. Standaard is de intervalwaarde 1. - definieert een aantal waarden die Oracle vooraf moet genereren om de prestaties te verbeteren. U gebruikt deze optie voor de kolom met een groot aantal inserts.
Oracle identity column examples
laten we enkele voorbeelden nemen van het gebruik van de Oracle identity columns.,
A) gegenereerd altijd voorbeeld
het volgende statement maakt een tabel met de naam identity_demo
die bestaat uit een identiteitskolom:
het volgende statement voegt een nieuwe rij in de identity_demo
tabel:
omdat we geen waarde hebben opgegeven voor de kolom id
, genereerde Oracle automatisch een sequentiële waarde vanaf 1.,
De volgende verklaring probeert te plaatsen van een waarde in het id
identity kolom:
Oracle heeft een fout:
Omdat de id-kolom is gedefinieerd als GENERATED ALWAYS
, het kon niet accepteren dat de verstrekte waarde.,
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.,
het volgende statement voegt een nieuwe rij in de identity_demo
tabel met een opgegeven waarde voor de id
kolom:
In dit voorbeeld gebruikte Oracle de opgegeven waarde en plaatste deze in de tabel.,Eerste, herschept de identity_demo
tabel waarvan u de id
kolom is gedefinieerd als identiteit kolom met de initiële waarde gaat uit van 100:
ten Tweede, het invoegen van een rij in de identity_demo
tabel:
ten Derde, een query gegevens uit het identity_demo
tabel:
Zoals je kan zien, de initiële waarde van de id
kolom is 100 als bedoeld in identiteit component.,
e) INCREMENT BY option example
verander eerst de id-kolom van de identity_demo
tabel die zowel START WITH
en INCREMENT BY
opties bevat.
tweede, voeg twee rijen in de identity_demo
tabel:
derde, querygegevens uit de tabel om de inserts te verifiëren:
zoals u kunt zien, heeft de eerste rij de ID-waarde 10. De tweede rij heeft de id waarde 20., Dit is wat we hebben gedefinieerd voor de id-kolom die moet beginnen met 10 en verhogen met 10 voor de nieuwe rij.
Oracle identity column restrictions
De identity columns zijn onderworpen aan de volgende restricties:
- elke tabel heeft één en slechts één identity column.
- het gegevenstype van de kolom identiteit moet een numeriek gegevenstype zijn. het door de gebruiker gedefinieerde gegevenstype mag niet worden gebruikt met de identiteitsclausule.
- de kolom identiteit wordt niet overgenomen door het
CREATE TABLE AS SELECT
statement., - de kolom identiteit kan geen andere
DEFAULT
beperking hebben. - het versleutelingsalgoritme voor versleutelde identiteitskolommen kan worden afgeleid, daarom moet u een sterk versleutelingsalgoritme gebruiken.
- de inline beperking van de kolom identiteit mag niet conflicteren met de
NOT NULL
enNOT DEFERRABLE
beperking die wordt aangegeven door de identiteitsclausule.
In deze tutorial hebt u geleerd hoe u de kolom Oracle identity kunt gebruiken waarmee u eenvoudig een automatisch gegenereerde numerieke kolom voor een tabel kunt definiëren.,
- Was deze tutorial nuttig?
- YesNo