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
Lepaskan: 2024-12-19 13:39:10
asal
385 orang telah melayarinya

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

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

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!

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