SQL-Vorlage: identitiy Spalte / auto increment Spalte

Für Index-organisierte Tabelle nutze ich folgende Vorlage:
(Option "by default on null" -> um für Dimensionen einen Singleton mit ID -1 vorgeben zu können.)

create table D_ZI_PSEUDO
(
   ZI_DATEN_JAHR     number (4) not null
 , D_ZI_PSEUDO_KEY   number  generated by default on null as identity not null
 , VS_NUMMER         varchar2 (40 char) not null
 , ZI_PSEUDO_JAHR    number (4) not null
 , INS_PROCESS_KEY   number not null
 , INS_DATE          date not null
 , constraint D_ZI_PSEUDO_PK primary key (ZI_DATEN_JAHR, D_ZI_PSEUDO_KEY)
 , constraint D_ZI_PSEUDO_UK1 unique (ZI_DATEN_JAHR, VS_NUMMER) using index local
)
organization index
tablespace MY_DATA
logging
partition by list (ZI_DATEN_JAHR)
   (partition P_0 values (0) logging nocompress tablespace MY_DATA)
nocompress
monitoring;


für die Identity-Spalte gibt es drei Optionen:

GENERATED
[ ALWAYS | BY DEFAULT [ ON NULL ] ]
AS IDENTITY [ ( identity_options ) ]

- always -> Es wird IMMER ein Wert erzeugt (es können keine eigenen Werte hinzugefügt werden)
- by default -> nutzt Identity, wenn die Spalte im Insert nicht angegeben ist
- by default on null -> nutzt Identity, wenn beim Insert KEIN Wert für die Spalte mitgegeben wird

Quelle u.a.: https://oracle-base.com/articles/12c/identity-columns-in-oracle-12cr1

Kommentare

Beliebte Posts aus diesem Blog

PGA unter Oracle 11g

trunc(sysdate) - nette Spiele mit dem Datum

Datapump - Verzeichnis erstellen