在表sc中演示触发器的insert操作,当学生成绩低于60分时,自动改为60,并在事先创建的记录表中插入一条学生成绩低于60的记录。
时间: 2024-03-25 08:36:11 浏览: 25
好的,以下是解决方案:
首先,我们需要创建一个记录表,用于记录学生成绩低于60分的情况。可以使用如下语句创建该表:
```
CREATE TABLE score_record (
sid VARCHAR(10),
course_id VARCHAR(10),
score INT,
record_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
这个表包含学生学号、课程编号、成绩和记录时间四个字段。它会记录学生成绩低于60分的情况。
接下来,我们需要创建一个触发器,当插入sc表中的一条记录时,如果学生成绩低于60分,触发器会自动将其改为60,并在score_record表中插入一条记录。
触发器代码如下:
```
CREATE TRIGGER trg_insert_sc
BEFORE INSERT ON sc
FOR EACH ROW
BEGIN
IF NEW.score < 60 THEN
SET NEW.score = 60;
INSERT INTO score_record (sid, course_id, score) VALUES (NEW.sid, NEW.course_id, NEW.score);
END IF;
END;
```
这个触发器会在每次向sc表中插入一条记录时执行。它会检查记录中的成绩是否低于60分,如果是,则将其改为60,并在score_record表中插入一条记录,记录学生学号、课程编号、成绩和记录时间。
现在,我们可以向sc表中插入一条记录来测试触发器是否正常工作:
```
INSERT INTO sc (sid, course_id, score) VALUES ('001', '001', 50);
```
这个语句会向sc表中插入一条学生001在课程001中的成绩50分的记录。由于成绩低于60分,触发器会将其改为60,并在score_record表中插入一条记录。
我们可以使用如下语句查询score_record表,确认触发器是否正确地记录了学生成绩低于60分的情况:
```
SELECT * FROM score_record;
```
如果触发器正常工作,我们应该能够看到刚刚插入的一条记录。