


Bagaimanakah Pencetus MySQL Dapat Menghalang Kemas Kini Jadual dan Mengendalikan Ralat?
Dec 13, 2024 pm 04:39 PMMencegah Kemas Kini Jadual Menggunakan Pencetus MySQL dengan Pengendalian Ralat
MySQL menyediakan mekanisme yang berkuasa untuk menguatkuasakan integriti data dan peraturan perniagaan melalui pencetus. Satu senario kritikal adalah menghalang kemas kini yang tidak dibenarkan atau tidak sah pada jadual. Artikel ini menunjukkan cara memanfaatkan pencetus MySQL untuk membuang ralat dan menghalang kemas kini sedemikian.
Melempar Ralat dalam Pencetus
Setakat MySQL 5.5, sintaks SIGNAL membenarkan pembangun membuang pengecualian dalam pencetus. Pernyataan SIGNAL mengambil dua parameter:
SIGNAL sqlstate SET message_text = 'Error Message';
di mana sqlstate menentukan jenis pengecualian dan message_text mentakrifkan mesej ralat tersuai. Jenis pengecualian hendaklah kod lima digit yang mewakili keadaan ralat yang berkenaan.
Mencipta Pencetus Tersuai untuk Pengendalian Ralat
Pertimbangkan contoh berikut: anda ingin menghalang kemas kini ke jadual jika nilai baharu lajur tertentu adalah negatif. Untuk mencapai matlamat ini, cipta pencetus sebelum operasi kemas kini seperti berikut:
CREATE TRIGGER trg_before_update BEFORE UPDATE ON my_table FOR EACH ROW BEGIN DECLARE msg VARCHAR(128); IF NEW.column_name < 0 THEN SET msg = CONCAT('MyTriggerError: Negative value in column_name: ', CAST(NEW.column_name AS CHAR)); SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg; END IF; END
Pencetus menyemak sama ada nilai baharu lajur_nama_lajur adalah negatif. Jika ya, ia membina mesej ralat tersuai dan membuang pengecualian menggunakan pernyataan SIGNAL. 45000 SQLSTATE mewakili pengecualian takrif pengguna yang tidak dikendalikan.
Menguji Pencetus
Laksanakan pernyataan berikut untuk menguji pencetus:
-- Insert valid and invalid data: INSERT INTO my_table (column_name) VALUES (1), (-1), (2); -- Display the table contents: SELECT * FROM my_table; -- Attempt to insert invalid data: INSERT INTO my_table (column_name) VALUES (-1);
Pernyataan INSERT pertama akan gagal kerana satu baris mengandungi nilai negatif, mencetuskan ralat tersuai yang ditakrifkan dalam pencetus. Pernyataan INSERT seterusnya juga akan gagal kerana pencetus menghalang kemas kini dengan nilai negatif.
Atas ialah kandungan terperinci Bagaimanakah Pencetus MySQL Dapat Menghalang Kemas Kini Jadual dan Mengendalikan Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)?

Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)?
