Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Menambah Kunci Asing pada Jadual SQLite Sedia Ada?

Bagaimanakah Saya Menambah Kunci Asing pada Jadual SQLite Sedia Ada?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-05 07:33:40993semak imbas

How Do I Add a Foreign Key to an Existing SQLite Table?

Menambah Kunci Asing pada Jadual SQLite Sedia Ada

Cabaran:

Anda sedang bekerja dengan jadual SQLite sedia ada , dan anda perlu menambah kekangan kunci asing pada sesuatu tertentu lajur.

Penyelesaian:

Tidak seperti pelaksanaan SQL yang lain, SQLite tidak menyokong varian TAMBAH KEKANGAN bagi perintah ALTER TABLE. Oleh itu, adalah tidak mungkin untuk menambah kekangan kunci asing secara langsung pada jadual sedia ada.

Pendekatan Alternatif:

Untuk mencapai hasil yang diingini, anda mesti mengikut langkah berikut:

  1. Simpan data daripada jadual sedia ada ke dalam jadual sementara.
  2. Lepaskan yang sedia ada jadual.
  3. Buat semula jadual dengan kekangan kunci asing disertakan.
  4. Masukkan kembali data daripada jadual sementara ke dalam jadual baharu.

Contoh SQL untuk ini proses:

-- Step 1: Create a temporary table
CREATE TEMPORARY TABLE t_child AS SELECT * FROM child;

-- Step 2: Drop the existing table
DROP TABLE child;

-- Step 3: Recreate the table with the foreign key constraint
CREATE TABLE child (
    id INTEGER PRIMARY KEY,
    parent_id INTEGER,
    description TEXT,
    FOREIGN KEY (parent_id) REFERENCES parent(id)
);

-- Step 4: Insert data back from the temporary table
INSERT INTO child SELECT * FROM t_child;

Dengan melaksanakan langkah-langkah ini, anda pada asasnya mencipta jadual baharu dengan kekangan kunci asing yang dikehendaki semasa mengekalkan data daripada jadual asal.

Atas ialah kandungan terperinci Bagaimanakah Saya Menambah Kunci Asing pada Jadual SQLite 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