1. 创建触发器

1.1 性别校验触发器

CREATE TRIGGER gender_check
BEFORE INSERT ON student
FOR EACH ROW
BEGIN
    IF NEW.gender NOT IN ('男', '女') THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '性别只能为男或女';
    END IF;
END;

该触发器会在插入学生数据之前校验 gender 字段的值,如果性别不为 '男' 或 '女',则会抛出错误信息。

1.2 软件工程专业成绩加分触发器

CREATE TRIGGER score_increase
BEFORE INSERT ON student
FOR EACH ROW
BEGIN
    IF NEW.department = '软件工程' THEN
        SET NEW.score = NEW.score + 5;
    END IF;
END;

该触发器会在插入学生数据之前检查 department 字段的值,如果该学生所在的部门为 '软件工程',则会将 score 字段的值自动加 5。

2. 执行存储过程

CALL add_student('张三', '男', '软件工程', 600);

执行以上存储过程后,将会将一个名为张三、性别为男、所在部门为软件工程、高考成绩为 605 的学生插入到学生表中。触发器 score_increase 会自动将该学生的高考成绩加 5,最终插入的结果为:

| id | name | gender | department | score | |----|------|--------|----------------|-------| | 1 | 张三 | 男 | 软件工程 | 605 |


原文地址: https://www.cveoy.top/t/topic/nXMu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录