Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengesahkan Integriti Rujukan dalam Jadual InnoDB Selepas Pengubahsuaian Data Pukal?

Bagaimana untuk Mengesahkan Integriti Rujukan dalam Jadual InnoDB Selepas Pengubahsuaian Data Pukal?

Patricia Arquette
Patricia Arquetteasal
2024-11-20 16:15:18754semak imbas

How to Verify Referential Integrity in InnoDB Tables After Bulk Data Modifications?

Menguatkuasakan Integriti Rujukan dalam Jadual InnoDB

Kekangan kunci asing dalam jadual InnoDB memastikan integriti data dengan menghalang pemadaman rekod yang dirujuk. Walau bagaimanapun, selepas pengubahsuaian data pukal, anda mungkin perlu mengesahkan bahawa kekangan kunci asing masih utuh.

InnoDB tidak menyediakan kaedah terbina dalam untuk memaksanya menyemak semula kunci asing. Walau bagaimanapun, prosedur tersimpan SQL tersuai boleh dibuat untuk melaksanakan tugas ini.

Prosedur Tersimpan SQL Tersuai

Prosedur tersimpan berikut, ANALYZE_INVALID_FOREIGN_KEYS, boleh digunakan untuk menganalisis semua jadual dalam pangkalan data dan mengenal pasti mana-mana asing yang tidak sah kunci:

DELIMITER $$

DROP PROCEDURE IF EXISTS ANALYZE_INVALID_FOREIGN_KEYS$$

CREATE
    PROCEDURE `ANALYZE_INVALID_FOREIGN_KEYS`(
        checked_database_name VARCHAR(64), 
        checked_table_name VARCHAR(64), 
        temporary_result_table ENUM('Y', 'N'))

    LANGUAGE SQL
    NOT DETERMINISTIC
    READS SQL DATA

    BEGIN
        -- ... (stored procedure code) ...
    END$$
DELIMITER ;

Penggunaan

Untuk menggunakan prosedur tersimpan, laksanakan pertanyaan berikut:

CALL ANALYZE_INVALID_FOREIGN_KEYS('%', '%', 'Y');

Ini akan menganalisis semua jadual dalam pangkalan data semasa dan menyimpan sebarang pelanggaran kunci asing yang tidak sah dalam jadual sementara bernama INVALID_FOREIGN_KEYS.

Mentafsir Keputusan

Jadual INVALID_FOREIGN_KEYS akan mengandungi maklumat berikut untuk setiap kunci asing yang tidak sah:

  • Nama_JADUAL_JADUAL daripada yang melanggar jadual.
  • NAMA_JADUAL: Nama jadual yang melanggar.
  • COLUMN_NAME: Nama lajur yang melanggar.
  • CONSTRAINT_NAME: Nama kekangan kunci asing.
  • REFERENCED_TABLE_SCHEMA: Nama pangkalan data yang dirujuk jadual.
  • REFERENCED_TABLE_NAME: Nama jadual yang dirujuk.
  • REFERENCED_COLUMN_NAME: Nama lajur yang dirujuk.
  • INVALID_KEY_COUNT: Bilangan kunci asing yang tidak sah rujukan.
  • INVALID_KEY_SQL: Pertanyaan SQL yang boleh digunakan untuk mendapatkan semula baris yang tidak sah.

HAD

Perhatikan bahawa prosedur ini mempunyai had berikut:

  • Ia tidak menyemak untuk kekangan kunci asing rujukan sendiri.
  • Ia memerlukan indeks pada kedua-dua lajur yang merujuk dan dirujuk untuk prestasi optimum.
  • Ia mungkin mengambil masa yang banyak untuk dijalankan bagi pangkalan data yang besar.

Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Integriti Rujukan dalam Jadual InnoDB Selepas Pengubahsuaian Data Pukal?. 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