Sim você pode. MySQL suporta regex (http://dev.mysql.com/doc /refman/5.6/en/regexp.html ) e para validação de dados, você deve usar um gatilho, pois o MySQL não suporta a restrição CHECK (você sempre pode mudar para o PostgreSQL como alternativa:). NB! Esteja ciente de que embora o MySQL tenha a construção de restrição CHECK, infelizmente o MySQL (até agora 5.6) não valida dados contra restrições de verificação. De acordo com http://dev.mysql.com/doc /refman/5.6/en/create-table.html :"A cláusula CHECK é analisada, mas ignorada por todos os mecanismos de armazenamento."
Você pode adicionar uma restrição de verificação para uma coluna telefone :
CREATE TABLE data (
phone varchar(100)
);
DELIMITER $$
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 ;
INSERT INTO data VALUES ('+64-221221442'); -- should be OK
INSERT INTO data VALUES ('+64-22122 WRONG 1442'); -- will fail with the error: #1644 - Wroooong!!!
No entanto, você não deve confiar apenas no MySQL (camada de dados no seu caso) para validação de dados. Os dados devem ser validados em todos os níveis do seu aplicativo.