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:
- 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
(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
Kommentar veröffentlichen