1)在表sc中演示触发器的insert操作,当学生成绩低于60分时,自动改为60,并在事先创建的记录表中插入一条学生成绩低于60的记录。
时间: 2024-03-25 21:37:09 浏览: 134
好的,以下是实现这个要求的触发器代码:
首先,我们需要创建一个记录表,用于记录学生成绩低于60的记录:
```
CREATE TABLE low_score_records (
id INT AUTO_INCREMENT PRIMARY KEY,
student_id INT NOT NULL,
course_id INT NOT NULL,
score INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
接着,我们可以创建一个名为 `sc_insert_trigger` 的触发器,实现当学生成绩低于60分时,自动改为60,并在记录表中插入一条学生成绩低于60的记录:
```
CREATE TRIGGER sc_insert_trigger
AFTER INSERT ON sc
FOR EACH ROW
BEGIN
IF NEW.score < 60 THEN
SET NEW.score = 60;
INSERT INTO low_score_records (student_id, course_id, score)
VALUES (NEW.student_id, NEW.course_id, NEW.score);
END IF;
END;
```
以上代码的含义是,当 sc 表插入一条新记录时,触发器会检查新记录的成绩是否低于60分。如果是,触发器会将成绩自动修改为60,并将该学生成绩低于60的记录插入到记录表中。
注意,为了避免触发器陷入死循环,我们需要在触发器中使用 `IF` 语句判断是否需要执行触发器的操作。同时,为了确保触发器能够正确地记录学生和课程信息,我们需要在触发器中使用 `NEW` 关键字,表示新插入的记录。
阅读全文