MySQL hỗ trợ REGEXP trong trigger để kiểm tra định dạng dữ liệu trước khi chèn.
Tạo bảng:
mysql> CREATE TABLE enforceDataUsingRegularExpression (yourPhoneNumber VARCHAR(60));
Tạo trigger kiểm tra định dạng số điện thoại:
mysql> DELIMITER //
mysql> CREATE TRIGGER enforce_phone_check BEFORE INSERT ON enforceDataUsingRegularExpression
-> FOR EACH ROW
-> BEGIN
-> IF (NEW.yourPhoneNumber REGEXP '^(\\+?[0-9]{1,4}-)?[0-9]{3,10}$' ) = 0 THEN
-> SIGNAL SQLSTATE '33455' SET MESSAGE_TEXT = 'Your Phone Number is incorrect';
-> END IF;
-> END //
mysql> DELIMITER ;
Thử chèn sai định dạng:
mysql> INSERT INTO enforceDataUsingRegularExpression VALUES("+55242-64576");
ERROR 1644 (33455): Your Phone Number is incorrect
mysql> INSERT INTO enforceDataUsingRegularExpression VALUES("+76-WD1232221");
ERROR 1644 (33455): Your Phone Number is incorrect
Chèn đúng định dạng:
mysql> INSERT INTO enforceDataUsingRegularExpression VALUES("+55-1232221");
Query OK, 1 row affected (0.13 sec)
Kết quả:
+-----------------+ | yourPhoneNumber | +-----------------+ | +55-1232221 | +-----------------+