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:

som du kan se har den första raden id-värdet 10. Den andra raden har id-värdet 20., Det här är vad vi definierade för ID-kolumnen som ska börja med 10 och öka med 10 för den nya raden.

Oracle identity column restrictions

identitetskolumnerna är föremål för följande begränsningar:

  • varje tabell har en och endast en identitetskolumn.
  • datatypen för identitetskolumnen måste vara en numerisk datatyp. den användardefinierade datatypen får inte användas med identitetsklausulen.
  • identitetskolumnen är inte ärvd avCREATE TABLE AS SELECT – satsen.,
  • identitetskolumnen kan inte ha en annanDEFAULT begränsning.
  • krypteringsalgoritmen för krypterade identitetskolumner kan härledas därför bör du använda en stark krypteringsalgoritm.
  • inline-begränsningen för identitetskolumnen får inte strida motNOT NULL ochNOT DEFERRABLE – begränsningen som anges av identitetsklausulen.

i den här handledningen har du lärt dig hur du använder Oracle identity-kolumnen som låter dig enkelt definiera en automatisk genererad numerisk kolumn för en tabell.,

  • var den här handledningen till hjälp?
  • YesNo

Articles

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *