Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah saya boleh Mencegah Entri Data Tidak Sah dalam Jadual MySQL Menggunakan Pencetus?

Bagaimanakah saya boleh Mencegah Entri Data Tidak Sah dalam Jadual MySQL Menggunakan Pencetus?

Patricia Arquette
Patricia Arquetteasal
2024-11-18 07:00:02409semak imbas

How can I Prevent Invalid Data Entries in MySQL Tables Using Triggers?

Mencegah Sisipan dan Kemas Kini dengan Pencetus dalam MySQL

Tidak seperti sistem pangkalan data lain, MySQL tidak menguatkuasakan kekangan semakan secara asli. Oleh itu, adalah perlu untuk meneroka kaedah alternatif untuk mengelakkan data tidak sah daripada memasuki jadual. Pencetus menyediakan mekanisme yang teguh untuk menangani isu ini.

Dalam contoh yang diberikan, kami ingin mengehadkan atribut agensi dalam jadual foo kepada nilai 1-5. Pendekatan naif akan melibatkan penciptaan pencetus yang menyemak nilai new.agency sebelum membenarkan sisipan atau kemas kini. Walau bagaimanapun, hanya mengabaikan sisipan atau kemas kini adalah tidak mencukupi.

Penyelesaian yang lebih berkesan melibatkan penggunaan sintaks SIGNAL. Dengan menimbulkan ralat (cth., SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'messej ralat anda'), anda boleh menghalang operasi daripada melaksanakan dan memberikan mesej ralat yang bermakna kepada pengguna.

Berikut ialah contoh yang dikemas kini untuk pencetus menggunakan sintaks ISYARAT:

create trigger agency_check
before insert on foo
for each row
begin
  if (new.agency < 1 or new.agency > 5) then
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Agency value must be between 1 and 5';
  end if 
end

Pencetus ini akan menghalang sebarang percubaan dengan berkesan untuk memasukkan atau mengemas kini jadual foo dengan nilai agensi yang tidak sah.

Atas ialah kandungan terperinci Bagaimanakah saya boleh Mencegah Entri Data Tidak Sah 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