为Students创建一触发器,并给出正反实例的SQL语句:当插入或修改一条学生记录时,确保此学生的入学年龄在14~40岁之间。
时间: 2024-03-01 19:53:39 浏览: 122
SQL语句实例及常用语句总结
创建触发器的SQL语句如下:
```
CREATE TRIGGER check_student_age
BEFORE INSERT OR UPDATE ON Students
FOR EACH ROW
BEGIN
IF NEW.age < 14 OR NEW.age > 40 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid age (14-40)';
END IF;
END;
```
其中,触发器名为 `check_student_age`,在每次插入或修改 `Students` 表中的一行记录时被触发。`BEFORE` 关键字表示在操作执行前触发。`FOR EACH ROW` 表示对每一行记录都要执行触发器。`NEW.age` 表示正在被插入或更新的记录中的 `age` 字段的新值。`SIGNAL` 语句用于抛出异常,当 `age` 不在 14~40 的范围内时会抛出一个错误信息。
下面是一个正例,插入了一条年龄为 22 岁的学生记录:
```
INSERT INTO Students (name, age) VALUES ('张三', 22);
```
下面是一个反例,插入了一条年龄为 13 岁的学生记录:
```
INSERT INTO Students (name, age) VALUES ('李四', 13);
```
执行该插入操作时,触发器会抛出一个异常,提示年龄不符合要求。
阅读全文