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
Lepaskan: 2025-01-23 23:27:20
asal
314 orang telah melayarinya

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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)
);
Salin selepas log masuk

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)
);
Salin selepas log masuk

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)
);
Salin selepas log masuk

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 Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan