Rumah >pangkalan data >Oracle >Pengenalan terperinci kepada proses penetapan kunci asing dalam Oracle

Pengenalan terperinci kepada proses penetapan kunci asing dalam Oracle

PHPz
PHPzasal
2023-04-04 09:01:294233semak imbas

Pangkalan data Oracle ialah sistem pengurusan pangkalan data hubungan (RDBMS) yang sangat popular dengan ciri berkuasa, termasuk sokongan untuk kunci asing.

Kunci asing merujuk kepada medan atau sekumpulan medan yang digunakan dalam satu jadual untuk dikaitkan dengan baris dalam jadual lain. Ia boleh digunakan untuk memastikan integriti data dan membolehkan capaian data berasaskan pertanyaan. Sebelum menambah kekangan kunci asing, jadual dan perkaitan yang diperlukan antara jadual mesti diwujudkan dalam Oracle. Dalam artikel ini, kami akan memperkenalkan secara terperinci proses penetapan kunci asing dalam Oracle.

1. Cipta jadual dan perhubungan
Pertama, kita perlu mencipta jadual yang perlu menetapkan kekangan kunci asing dan jadual menghala ke jadual. Katakan kita ingin mengaitkan jadual pelanggan dengan jadual pesanan. Kita boleh mencipta dua jadual ini dalam Oracle menggunakan kod berikut:

CREATE TABLE customers (
  customer_id INT PRIMARY KEY,
  customer_name VARCHAR(50),
  customer_email VARCHAR(100)
);

CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  order_date DATE,
  customer_id INT,
  FOREIGN KEY (customer_id)
  REFERENCES customers(customer_id)
);

Dalam contoh di atas, kami telah mencipta dua jadual iaitu pelanggan dan pesanan. Jadual pesanan mengandungi medan customer_id yang sepadan dengan pelanggan, yang merupakan medan kunci utama jadual pelanggan.

2. Tambah kekangan kunci asing
Selepas mewujudkan perhubungan, kita boleh menambah kekangan kunci asing. Kekangan kunci asing dalam Oracle boleh ditakrifkan apabila jadual dibuat atau ditambah selepas jadual dibuat.

Dalam langkah sebelumnya, kami telah mentakrifkan kekangan utama asing dan menambahkannya pada jadual melalui penyata FOREIGN KEY dan RUJUKAN. Di sini, kami akan menerangkan maksud setiap kata kunci secara terperinci:

  1. KUNCI ASING: Tentukan medan kunci asing.
  2. RUJUKAN: Mentakrifkan jadual sasaran untuk kunci asing dan menentukan kunci utama jadual sasaran.
  3. ON DELETE CASCADE: Tentukan operasi lata apabila memadamkan rekod jadual induk. Apabila rekod dalam jadual induk dipadamkan, rekod berkaitan dalam jadual anak juga dipadamkan. Anda boleh menggunakan ON DELETE SET NULL atau ON DELETE NO ACTION untuk menentukan operasi lain, seperti menetapkan kunci asing kepada NULL atau melarang pemadaman.

Dalam Oracle, sintaks untuk menambah kekangan kunci asing adalah seperti berikut:

ALTER TABLE child_table 
ADD CONSTRAINT fk_name 
FOREIGN KEY (child_column) 
REFERENCES parent_table (parent_column);

Di mana, child_table ialah subjadual yang mengandungi medan kunci asing, child_column ialah nama bagi lajur kunci asing, parent_table ialah nama jadual sasaran, parent_column ialah nama lajur kunci utama dalam jadual sasaran. fk_name ialah nama kekangan kunci asing dan mestilah unik.

Sebagai contoh, dalam jadual pesanan kami, kami boleh menambah kekangan kunci asing berikut (nota, ini boleh dilakukan pada masa penciptaan jadual melalui kenyataan CREATE TABLE):

ALTER TABLE orders 
ADD CONSTRAINT fk_customer_id 
FOREIGN KEY (customer_id) 
REFERENCES customers(customer_id) 
ON DELETE CASCADE;

Ini akan dilakukan pada masa penciptaan jadual Tambahkan kekangan kunci asing bernama fk_customer_id pada jadual pesanan, yang merujuk kepada lajur kunci utama customer_id dalam jadual pelanggan. Apabila anda memadamkan baris dalam jadual pelanggan, operasi itu turut memadamkan semua pesanan yang dikaitkan dengannya.

3. Uji kekangan kunci asing
Setelah kekangan kunci asing ditambahkan pada jadual, kami boleh menguji sama ada ia berfungsi dengan betul. Kita boleh menguji kekangan ini dengan memasukkan baris ke dalam jadual pesanan yang tidak sepadan dengan nilai customer_id:

INSERT INTO orders (order_id, order_date, customer_id)
VALUES (1, '2021-01-01', 100);

-- ERROR: ORA-02291: integrity constraint (fk_customer_id) violated - parent key not found

Ini akan menyebabkan ralat kerana ia merujuk nilai customer_id yang tidak wujud dalam jadual pelanggan. Kami boleh menggunakan kod ralat berkaitan kekangan integriti ORA-02291 untuk mengesahkan bahawa kunci asing berfungsi.

4. Ringkasan
Dalam Oracle, kunci asing ialah alat penting untuk memastikan integriti data dan mengekalkan hubungan antara jadual. Kita boleh menggunakan kata kunci FOREIGN KEY dan REFERENCES untuk mentakrifkan kekangan kunci asing dan mentakrifkan operasi lata menggunakan ON DELETE CASCADE, SET NULL atau NO ACTION. Selepas menentukan kekangan kunci asing, kami boleh menguji sama ada ia berfungsi dengan betul dan memastikan ia berfungsi dalam operasi pangkalan data.

Atas ialah kandungan terperinci Pengenalan terperinci kepada proses penetapan kunci asing dalam Oracle. 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