Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencegah Entri Pendua dalam Jadual MySQL Menggunakan Pencetus?

Bagaimana untuk Mencegah Entri Pendua dalam Jadual MySQL Menggunakan Pencetus?

DDD
DDDasal
2024-12-16 07:48:10968semak imbas

How to Prevent Duplicate Entries in MySQL Tables Using Triggers?

Cara Mengendalikan Entri Pendua dalam Pencetus MySQL

Latar Belakang:
Dalam senario ini, matlamatnya adalah untuk memastikan gabungan unik URL dan rentetan parameter mengekalkan keunikan dalam jadual MySQL. Walau bagaimanapun, panjang rentetan parameter melebihi had panjang kunci untuk MySQL, menghalang penggunaan kekangan kunci unik.

Pelaksanaan Pencetus:

Untuk menangani isu ini, pencetus boleh digunakan untuk menguatkuasakan kekangan keunikan. Kod pencetus menyemak entri pendua sebelum membenarkan operasi sisipan.

Mengendalikan Entri Pendua:

Kod pencetus termasuk dua bahagian kritikal:

  1. Batalkan/Naikkan Pengecualian kepada C#:
    Untuk membuang pengecualian apabila entri pendua dikesan, kod berikut boleh ditambah:

    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Duplicate entry detected';
  2. Benarkan Sisipan:
    Jika tiada pendua wujud, operasi sisipan dibenarkan dengan meninggalkan blok ELSE kosong.

Penyelesaian Diperbaiki:

Penyelesaian yang lebih maju menggunakan fungsi SIGNAL MySQL, yang membenarkan mesej ralat tersuai dan pengecualian terperangkap. Pendekatan ini digariskan dalam kod yang disediakan:

CREATE TRIGGER `TestTable_SomeTrigger`
BEFORE UPDATE ON `test_table`
FOR EACH ROW
BEGIN
    DECLARE msg VARCHAR(255);
    IF (SomeTestToFail = "FAIL!") THEN
        set msg = "DIE: You broke the rules... I will now Smite you, hold still...";
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg;
    END IF;

    -- Do any other code here you may want to occur if it's all OK or leave blank it will be
    --  skipped if the above if is true
END$$

Kaedah ini mengembalikan mesej ralat tersuai yang boleh dipintas dan dikendalikan dalam kod C#.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah Entri Pendua dalam Jadual MySQL Menggunakan Pencetus?. 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