MySql 表和触发器

标签 mysql triggers

我的理解是MySql忽略CREATE TABLE语法中的CHECK。因此我在想 - 为什么不使用触发器呢?

例如,我有一张人员表,其中一个字段是电话号码。是否可以构建一个触发器来验证电话号码是否有效(例如区号),并在电话号码无效的情况下使插入失败并显示适当的错误消息?

最佳答案

是的,您可以创建触发器来验证插入的值并调用未知过程。例如-

CREATE TABLE table1
  id INT(11) NOT NULL,
  phone VARCHAR(10) DEFAULT NULL,
  PRIMARY KEY (id)
);

DELIMITER $$

CREATE trigger1
BEFORE INSERT
ON table1
FOR EACH ROW
BEGIN
  IF NOT NEW.phone REGEXP '^[0-9]{3}-[0-9]{2}-[0-9]{2}$' THEN
    CALL error; -- Call nonexistent procedure
  END IF;
END
$$

DELIMITER ;

关于MySql 表和触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7400445/

相关文章:

mysql - 更好的数据库模式

sql-server - 维护为拆分成多个表的实体的审核日志

Mysql 主从复制

php - Mysql 选择不同的 ID 和名称

php - 我可以在 PHP 中混合使用 MySQL API 吗?

wpf - 如何根据 ViewModel 属性的值让 View 元素淡入/淡出?

wpf - 当模态对话框在 WPF 中显示并且用户单击父窗口时,使模态对话框闪烁、闪烁或摇晃

MySQL错误: Could not execute MySQL-statement: Incorrect datetime value?

PHP/MySQL 连接查询

linux - RPM 规范文件未在同一包中执行两个触发器