2)给成绩表(score)增加一个说明列(explain,varchar(10)),设计一个触发器,使向成绩表中增加数据和修改分数时,如果成绩为>=60分,说明列填写‘及格’,其他情况填写’不及格’
时间: 2024-03-07 18:47:09 浏览: 60
您可以使用以下代码创建一个MySQL的触发器来在向成绩表中增加数据和修改分数时,自动填充说明列:
```sql
CREATE TRIGGER `score_explain_trigger` BEFORE INSERT ON `score`
FOR EACH ROW
BEGIN
IF NEW.score >= 60 THEN
SET NEW.explain = '及格';
ELSE
SET NEW.explain = '不及格';
END IF;
END;
CREATE TRIGGER `score_explain_trigger_update` BEFORE UPDATE ON `score`
FOR EACH ROW
BEGIN
IF NEW.score >= 60 THEN
SET NEW.explain = '及格';
ELSE
SET NEW.explain = '不及格';
END IF;
END;
```
这个触发器会在每次向成绩表(`score`)中插入数据或者更新分数时被触发。如果成绩(`score`)大于等于60分,则说明列(`explain`)将会被填充为'及格',否则说明列将会被填充为'不及格'。
相关问题
请用SQL命令,2)给成绩表(score)增加一个说明列(explain,varchar(10)),设计一个触发器,使向成绩表中增加数据和修改分数时,如果成绩为>=60分,说明列填写‘及格’,其他情况填写’不及格’,并且能够顺利在SSMS2019上成功运行
以下是实现要求的 SQL 命令:
```sql
-- 给成绩表增加说明列
ALTER TABLE score
ADD explain VARCHAR(10);
-- 创建成绩表的触发器
CREATE TRIGGER tr_score_explain
ON score
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @id INT, @score INT;
SELECT @id = id, @score = score FROM inserted;
IF @score < 60
UPDATE score SET explain = '不及格' WHERE id = @id;
ELSE
UPDATE score SET explain = '及格' WHERE id = @id;
END;
```
这段 SQL 命令首先使用 ALTER TABLE 命令给成绩表 score 增加了一个名为 explain 的 VARCHAR(10) 类型的列。接着创建了一个名为 tr_score_explain 的触发器,监视 score 表的 INSERT 和 UPDATE 操作,并在操作完成后根据成绩的高低设置相应的说明。注意,在运行这段 SQL 命令时,需要确保 score 表已存在。
阅读全文