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!