mysql 插入触发器 不满足条件不插入
时间: 2023-07-28 20:26:39 浏览: 273
测试插入前和插入后NEW表中的值-MYSQL触发器操操作
可以使用 MySQL 中的 BEFORE INSERT 触发器,在触发器中添加条件判断,如果不满足条件则取消插入操作。
例如,假设有一个名为 `students` 的表,包含 `id` 和 `name` 两列,现在要求在插入数据时,必须满足 `name` 不为空的条件才能插入。则可以使用以下 SQL 语句创建触发器:
```
CREATE TRIGGER insert_student
BEFORE INSERT ON students
FOR EACH ROW
BEGIN
IF NEW.name IS NULL OR NEW.name = '' THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Name cannot be empty';
END IF;
END;
```
在触发器中,使用 `IF` 语句判断 `name` 是否为空,如果为空则使用 `SIGNAL` 语句抛出异常,取消插入操作。`SIGNAL` 语句中的 `SQLSTATE '45000'` 表示抛出一个自定义的 SQL 异常,`MESSAGE_TEXT` 则是异常的提示信息。
当插入数据时,如果 `name` 为空,则会触发触发器,抛出异常,插入操作将被取消。如果 `name` 不为空,则会继续进行插入操作。
阅读全文