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

Bagaimanakah Saya Boleh Menambah Kekangan Utama Asing pada Jadual SQLite Sedia Ada?

DDD
DDDasal
2025-01-04 03:55:38242semak imbas

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

SQLite: Menambah Kunci Asing pada Jadual Sedia Ada

Apabila membuat pertanyaan pangkalan data, mengekalkan integriti data adalah yang terpenting. Kunci asing memainkan peranan penting dalam menguatkuasakan perhubungan antara jadual, memastikan rujukan data adalah sah. Walau bagaimanapun, dalam konteks SQLite, batasan tertentu wujud apabila mengubah suai jadual sedia ada.

Cabaran: Menambah Kunci Asing pada Jadual Sedia Ada

Pertimbangkan senario berikut: Anda mempunyai jadual SQLite sedia ada bernama "anak" dengan skema berikut:

CREATE TABLE child( 
  id INTEGER PRIMARY KEY, 
  parent_id INTEGER, 
  description TEXT);

Objektif anda ialah untuk mewujudkan kekangan kunci asing pada lajur "parent_id", dengan mengandaikan bahawa kunci asing telah didayakan. Walau bagaimanapun, kaedah konvensional mungkin tidak mencukupi.

Penyelesaian: Had dan Penyelesaian

Dalam SQLite, menambah kunci asing pada jadual sedia ada tidak boleh dilakukan secara langsung menggunakan "ALTER sintaks JADUAL TAMBAH KEKANGAN". Tidak seperti sistem pangkalan data lain, SQLite tidak mempunyai sokongan untuk varian ALTER TABLE khusus ini.

Satu-satunya penyelesaian yang boleh dilaksanakan ialah mengubah suai jadual semasa pembuatannya. Anda boleh menggugurkan jadual "anak" sedia ada, menciptanya semula dengan kekangan kunci asing, dan kemudian mengisinya semula dengan data yang disimpan daripada jadual sementara:

CREATE TABLE child ( 
    id           INTEGER PRIMARY KEY, 
    parent_id    INTEGER, 
    description  TEXT,
    FOREIGN KEY (parent_id) REFERENCES parent(id)
);

Prosedur ini memastikan kekangan kunci asing berjaya ditubuhkan untuk jadual "kanak-kanak".

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menambah Kekangan Utama 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