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
Lepaskan: 2024-12-19 02:52:09
asal
961 orang telah melayarinya

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

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

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

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

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

Soal jadual untuk mengesahkan penambahan automatik:

SELECT * FROM t;
Salin selepas log masuk
Salin selepas log masuk

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

Masukkan baris baharu:

INSERT INTO t(text) VALUES('This table has an identity column');
Salin selepas log masuk

Tanya jadual untuk pengesahan:

SELECT * FROM t;
Salin selepas log masuk
Salin selepas log masuk

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!

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