Bolehkah Pengesahan Data Menggunakan Ungkapan Biasa Dikuatkuasakan dalam MySQL?
Mengesahkan data adalah penting untuk memastikan integriti data. Ungkapan biasa (regex) menawarkan fleksibiliti dalam menentukan kekangan. Bolehkah MySQL memanfaatkan regex untuk pengesahan data?
Ya, MySQL menyokong regex untuk pengesahan data. Terutamanya, ia tidak menyokong kekangan CHECK untuk pengesahan data. Sebaliknya, pencetus harus digunakan.
Sebagai contoh, anda boleh membuat kekangan semak untuk lajur telefon menggunakan pencetus:
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$$
Pencetus ini menyemak sama ada nombor telefon masuk sepadan dengan yang ditentukan ungkapan biasa. Jika ia tidak sepadan, ia menandakan ralat dan menetapkan mesej ralat tersuai.
INSERT INTO data VALUES ('+64-221221442'); -- should be OK INSERT INTO data VALUES ('+64-22122 WRONG 1442'); -- will fail with the error: #1644 - Wroooong!!!
Walau bagaimanapun, bergantung sepenuhnya pada MySQL untuk pengesahan data tidak disyorkan. Data harus disahkan pada pelbagai peringkat aplikasi untuk integriti data yang optimum.
Atas ialah kandungan terperinci Bolehkah Pengesahan Data Menggunakan Ungkapan Biasa Dilaksanakan dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!