Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menambah Fungsi Penambahan Auto pada Lajur Oracle Sedia Ada?

Bagaimanakah Saya Boleh Menambah Fungsi Penambahan Auto pada Lajur Oracle Sedia Ada?

Susan Sarandon
Susan Sarandonasal
2024-12-19 13:39:10465semak imbas

How Can I Add Auto-Increment Functionality to Existing Oracle Columns?

Auto-Peningkatan untuk Lajur Oracle Pra-sedia ada

Semasa menambah fungsi auto-kenaikan pada lajur sedia ada tidak disokong secara asli dalam Oracle, pelbagai pendekatan boleh digunakan untuk mencapai matlamat ini.

11g dan Sebelum: Urutan dan Pencetus

Untuk Oracle versi 11g dan lebih awal, urutan dan pencetus boleh digunakan:

  • Buat urutan: Ini jujukan akan menjana nilai kenaikan automatik.
  • Ubah jadual: Tambahkan kekangan kunci utama pada lajur.
  • Buat pencetus: Pencetus akan memasukkan nilai seterusnya daripada jujukan ke dalam lajur apabila baris baharu dimasukkan (jika lajur ialah null).

Contoh:

-- Create sequence
CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1;

-- Alter table
ALTER TABLE t ADD CONSTRAINT id_pk PRIMARY KEY (ID);

-- Create trigger
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;

12c dan Kemudian: Lajur Identiti

Oracle 12c diperkenalkan ciri lajur identiti, yang membenarkan peningkatan automatik dalam jadual sendiri:

  • Buat jadual dengan lajur identiti: Tentukan atribut GENERATED ALWAYS AS IDENTITY untuk lajur.
  • Contoh:

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

Sila ambil perhatian bahawa pendekatan ini tidak mengemas kini nilai sedia ada dalam lajur. Untuk mengubah suai nilai sedia ada, pertanyaan kemas kini yang berasingan diperlukan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menambah Fungsi Penambahan Auto pada Lajur 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