Rumah >pangkalan data >tutorial mysql >Bolehkah MySQL Pencetus Menguatkuasakan Pengesahan Data dengan Ungkapan Biasa?
Dalam aplikasi dipacu data, memastikan integriti dan kesahihan input pengguna adalah penting. Untuk keperluan pengesahan yang kompleks, ungkapan biasa menawarkan fleksibiliti yang besar. Bolehkah kita memanfaatkan kuasa ini dalam MySQL?
Ya, MySQL menyokong ungkapan biasa. Untuk menguatkuasakan pengesahan data menggunakan regex, pertimbangkan untuk menggunakan pencetus pangkalan data. Kekurangan sokongan MySQL untuk kekangan CHECK memerlukan penyelesaian ini.
Sebagai contoh, katakan kami ingin mengesahkan nombor telefon dalam jadual bernama data dengan atribut yang dipanggil telefon . Kami boleh mentakrifkan pencetus seperti berikut:
CREATE TRIGGER trig_phone_check BEFORE INSERT ON data FOR EACH ROW BEGIN IF (NEW.phone REGEXP '^(\+?[0-9]{1,4}-)?[0-9]{3,10}$' ) = 0 THEN SIGNAL SQLSTATE '12345' SET MESSAGE_TEXT = 'Wroooong!!!'; END IF; END$$ DELIMITER ;
Pencetus ini memastikan setiap nombor telefon yang dimasukkan mematuhi corak tertentu (cth., format antarabangsa dan kiraan digit yang sah). Apabila entri tidak sah dicuba, mesej ralat tersuai akan dipaparkan.
Walaupun pencetus MySQL menyediakan pengesahan data, adalah penting untuk melaksanakan mekanisme pengesahan pada berbilang peringkat dalam aplikasi anda . Bergantung pada lapisan pangkalan data semata-mata boleh mengakibatkan isu integriti data jika pengesahan gagal pada bahagian hadapan atau lapisan lain.
Mari kita tunjukkan pencetus dalam tindakan:
INSERT INTO data VALUES ('+64-221221442'); -- Successful insertion INSERT INTO data VALUES ('+64-22122 WRONG 1442'); -- Insertion fails with error: #1644 - Wroooong!!!
Dengan memasukkan ungkapan biasa dalam pencetus MySQL, anda boleh menguatkuasakan semakan data dan mengekalkan integriti pangkalan data anda dengan berkesan. Walaupun pengesahan peringkat pangkalan data adalah penting, ingatlah untuk menambahnya dengan mekanisme pengesahan di peringkat aplikasi lain untuk perlindungan data yang komprehensif.
Atas ialah kandungan terperinci Bolehkah MySQL Pencetus Menguatkuasakan Pengesahan Data dengan Ungkapan Biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!