Auto-Inkrement-Spalten in Oracle 11g und höher erstellen
In Oracle-Datenbanken fehlt das Konzept der Auto-Inkrement-Spalten bis Version 12c. Trotzdem ist es möglich, dieses Verhalten in Oracle 11g mithilfe einer Sequenz und eines Triggers zu emulieren.
Methode für Oracle 11g
Beginnen Sie mit der Definition der Tabelle mit einem Primärschlüssel Spalte:
CREATE TABLE departments ( ID NUMBER(10) NOT NULL, DESCRIPTION VARCHAR2(50) NOT NULL ); ALTER TABLE departments ADD ( CONSTRAINT dept_pk PRIMARY KEY (ID) ); CREATE SEQUENCE dept_seq START WITH 1;
Als nächstes erstellen Sie einen Trigger, der eindeutige ID-Werte für neue generiert Einfügungen:
CREATE OR REPLACE TRIGGER dept_bir BEFORE INSERT ON departments FOR EACH ROW BEGIN SELECT dept_seq.NEXTVAL INTO :new.id FROM dual; END;
Update für Oracle 12c und höher
Oracle 12c führt einen nativen IDENTITY-Spaltentyp ein, der eine echte Funktion zur automatischen Inkrementierung bietet:
create table t1 ( c1 NUMBER GENERATED by default on null as IDENTITY, c2 VARCHAR2(10) );
Alternativ können Sie benutzerdefinierte Start- und Inkrementwerte angeben Werte:
create table t1 ( c1 NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1), c2 VARCHAR2(10) );
Oder verwenden Sie in Oracle 12c und höher eine Sequenz als Standardwert:
CREATE SEQUENCE dept_seq START WITH 1; CREATE TABLE departments ( ID NUMBER(10) DEFAULT dept_seq.nextval NOT NULL, DESCRIPTION VARCHAR2(50) NOT NULL ); ALTER TABLE departments ADD ( CONSTRAINT dept_pk PRIMARY KEY (ID) );
Das obige ist der detaillierte Inhalt vonWie erstelle ich automatisch inkrementierende Spalten in Oracle: 11g vs. 12c und höher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!