Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Kiểm tra dữ liệu bằng Regular Expression trong MySQL (Trigger BEFORE INSERT)

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     |
+-----------------+