Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menambah Fungsi Penambahan Auto pada Lajur Jadual Oracle Sedia Ada?

Bagaimana untuk Menambah Fungsi Penambahan Auto pada Lajur Jadual Oracle Sedia Ada?

DDD
DDDasal
2024-12-19 02:52:09964semak imbas

How to Add Auto-Incrementing Functionality to Existing Oracle Table Columns?

Menambah Automatik Lajur Jadual Oracle Sedia Ada

Dalam Oracle, menambahkan fungsi autokenaikan pada lajur sedia ada dengan kunci utama boleh dicapai dalam cara yang berbeza bergantung pada versi Oracle.

Oracle 11g dan Sebelumnya

Buat jujukan yang akan menambah nilai lajur:

CREATE SEQUENCE t_seq
START WITH 150111111
INCREMENT BY 1;

Gunakan pencetus untuk menetapkan nilai jujukan seterusnya kepada lajur semasa sisipan:

CREATE OR REPLACE TRIGGER t_trg
BEFORE INSERT ON t
FOR EACH ROW
WHEN (new.id IS NULL)
BEGIN
    SELECT t_seq.NEXTVAL
    INTO   :new.id
    FROM   dual;
END;

Oracle 12c dan Kemudian

Oracle 12c memperkenalkan lajur Identiti, yang membenarkan nilai penambahan automatik tanpa memerlukan jujukan atau pencetus:

CREATE TABLE t
(
    ID NUMBER GENERATED ALWAYS AS IDENTITY
    START WITH 150111111 INCREMENT BY 1,
    text VARCHAR2(50)
);

Setelah lajur tersedia, baris baharu akan dinaikkan secara automatik bermula daripada nilai permulaan yang ditentukan.

Contoh Menggunakan Oracle 11g

Memandangkan jadual:

TABLE t (
 SEQ_ID NUMBER(10) NOT NULL
);

Selepas mencipta jujukan "t_seq" dan pencetus "t_trg", masukkan baris baharu:

INSERT INTO t(text) VALUES('auto-increment test 1');
INSERT INTO t(text) VALUES('auto-increment test 2');

Soal jadual untuk mengesahkan penambahan automatik:

SELECT * FROM t;

Contoh Menggunakan Oracle 12c

Dengan jadual ditakrifkan sebagai:

CREATE TABLE t
(
    ID NUMBER GENERATED ALWAYS AS IDENTITY
    START WITH 150111111 INCREMENT BY 1,
    text VARCHAR2(50)
);

Masukkan baris baharu:

INSERT INTO t(text) VALUES('This table has an identity column');

Tanya jadual untuk pengesahan:

SELECT * FROM t;

Dalam kedua-dua versi Oracle, lajur "ID" kini akan dinaikkan secara automatik bermula daripada nilai permulaan yang ditentukan (150111111) dengan langkah 1.

Atas ialah kandungan terperinci Bagaimana untuk Menambah Fungsi Penambahan Auto pada Lajur Jadual Oracle Sedia Ada?. 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