Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencipta Lajur Auto-Incrementing dalam Oracle 11g dan Kemudian?

Bagaimana untuk Mencipta Lajur Auto-Incrementing dalam Oracle 11g dan Kemudian?

Linda Hamilton
Lepaskan: 2025-01-23 23:31:20
asal
241 orang telah melayarinya

How to Create Auto-Incrementing Columns in Oracle 11g and Later?

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

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

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

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

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

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!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan