-- 创建一个名为 `before_insert_employee` 的触发器,它会在每次向 `employees` 表插入数据之前执行。
CREATE TRIGGER before_insert_employee
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
-- 检查新插入的员工年龄是否小于18岁,如果是则抛出错误。
IF NEW.age < 18 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Employee must be at least 18 years old';
END IF;
-- 自动设置创建时间为当前时间。
SET NEW.created_at = NOW();
END;
-- 创建一个名为 `after_update_salary` 的触发器,它会在每次更新 `employees` 表中的 `salary` 字段之后执行。
CREATE TRIGGER after_update_salary
AFTER UPDATE ON employees
FOR EACH ROW
BEGIN
-- 如果薪资有变化,则记录到 `salary_changes` 表中。
IF OLD.salary <> NEW.salary THEN
INSERT INTO salary_changes (employee_id, old_salary, new_salary, change_date)
VALUES (OLD.id, OLD.salary, NEW.salary, NOW());
END IF;
END;
before_insert_employee
触发器:
employees
表插入新记录之前 (BEFORE INSERT
)。created_at
字段设置当前时间。after_update_salary
触发器:
employees
表中的 salary
字段之后 (AFTER UPDATE
)。salary_changes
表中。这些触发器可以帮助你在数据库层面强制执行业务规则,并自动维护相关的历史记录。
上一篇:mysql查询进程
下一篇:mysql int类型
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站