Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencipta Lajur Auto-Incrementing dalam Oracle: 11g lwn. 12c and Beyond?

Bagaimana untuk Mencipta Lajur Auto-Incrementing dalam Oracle: 11g lwn. 12c and Beyond?

Patricia Arquette
Patricia Arquetteasal
2025-01-23 23:27:20221semak imbas

How to Create Auto-Incrementing Columns in Oracle: 11g vs. 12c and Beyond?

Mencipta Lajur Peningkatan Auto dalam Oracle 11g dan Seterusnya

Pangkalan data Oracle tidak mempunyai konsep lajur kenaikan automatik sehingga versi 12c. Walaupun begitu, adalah mungkin untuk meniru tingkah laku ini dalam Oracle 11g menggunakan urutan dan pencetus.

Kaedah untuk Oracle 11g

Mulakan dengan mentakrifkan jadual dengan kunci utama lajur:

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;

Seterusnya, buat pencetus yang menjana ID unik nilai untuk sisipan baharu:

CREATE OR REPLACE TRIGGER dept_bir 
BEFORE INSERT ON departments 
FOR EACH ROW

BEGIN
  SELECT dept_seq.NEXTVAL
  INTO   :new.id
  FROM   dual;
END;

Kemas kini untuk Oracle 12c dan Kemudian

Oracle 12c memperkenalkan jenis lajur IDENTITI asli, menyediakan ciri kenaikan automatik sebenar:

create table t1 (
    c1 NUMBER GENERATED by default on null as IDENTITY,
    c2 VARCHAR2(10)
);

Sebagai alternatif, anda boleh menentukan permulaan dan kenaikan tersuai nilai:

create table t1 (
    c1 NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
    c2 VARCHAR2(10)
);

Atau, dalam Oracle 12c dan lebih tinggi, gunakan jujukan sebagai nilai lalai:

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)
);

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Lajur Auto-Incrementing dalam Oracle: 11g lwn. 12c and Beyond?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn