Mencipta Lajur seperti AUTO_INCREMENT dalam Oracle 11g
Dalam versi Oracle sehingga 11g, jenis lajur AUTO_INCREMENT tidak tersedia secara asli. Walau bagaimanapun, terdapat mekanisme alternatif untuk mencapai kefungsian yang sama.
Menggunakan Jujukan dan Pencetus
Pendekatan yang paling biasa dalam Oracle 11g ialah menggunakan gabungan jujukan dan a pencetus:
Jadual Definisi:
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;
Takrif Pencetus:
CREATE OR REPLACE TRIGGER dept_bir BEFORE INSERT ON departments FOR EACH ROW BEGIN SELECT dept_seq.NEXTVAL INTO :new.id FROM dual; END; /
Pencetus ini memberikan nilai tambahan yang unik kepada baris yang baru dimasukkan, meniru gelagat lajur autokenaikan.
Lajur IDENTITI (Oracle 12c )
Dalam Oracle 12c dan lebih baru, jenis lajur IDENTITY telah diperkenalkan, menyediakan ciri auto-kenaikan sebenar:
Definisi Jadual:
create table t1 ( c1 NUMBER GENERATED by default on null as IDENTITY, c2 VARCHAR2(10) );
Takrifan ini mencipta lajur 'c1' yang meningkat secara automatik untuk setiap baris baharu dimasukkan ke dalam jadual.
Sebagai alternatif, anda boleh menentukan nilai permulaan dan kenaikan:
create table t1 ( c1 NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1), c2 VARCHAR2(10) );
Menggunakan Jujukan sebagai Nilai Lalai (Oracle 12 )
Pilihan lain dalam Oracle 12 dan lebih baru ialah menggunakan jujukan sebagai nilai lalai untuk a lajur:
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) );
Pendekatan ini memberikan nilai tambahan menggunakan jujukan, tetapi operasi kenaikan sebenar diuruskan oleh pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Lajur Auto-Incrementing dalam Oracle 11g dan Kemudian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!