为数据库表SC-info创建一个触发器:当插入或修改一个记录时确保此记录的成绩在0~100分
时间: 2024-03-07 07:49:16 浏览: 218
你可以使用以下的SQL语句为表SC-info创建一个触发器,用于在插入或修改记录时确保成绩在0~100分之间:
```sql
CREATE TRIGGER trig_sc_info_score_check
BEFORE INSERT OR UPDATE ON SC-info
FOR EACH ROW
BEGIN
IF NEW.score < 0 OR NEW.score > 100 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Score must be between 0 and 100';
END IF;
END;
```
这个触发器的含义是:在每次插入或更新SC-info表中的记录之前,检查该记录的score字段是否在0~100分之间。如果不是,则触发一个SQL异常。
需要注意的是,这个触发器只能检查单个记录的score值,不能检查批量插入/更新的情况。如果你需要检查批量操作,需要编写更加复杂的触发器逻辑。
相关问题
基于school数据库中的student, course, sc表,在SQL数据库中创建满足下述要求的触发器:对SC表进行插入或修改时,如果考试成绩不在0-100范围内时,则撤销插入或修改操作。
可以使用下面的SQL语句创建触发器:
```
CREATE TRIGGER check_score
BEFORE INSERT OR UPDATE ON sc
FOR EACH ROW
BEGIN
IF NEW.score < 0 OR NEW.score > 100 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Score must be between 0 and 100';
END IF;
END;
```
这个触发器会在每次插入或更新SC表中的记录时执行。如果插入或更新的记录的score值不在0-100范围内,则会触发一个SQLSTATE错误,并撤销操作。
6.定义一个触发器, 在EDUC数据库中建立一个 名为tr_insertstudent的INSERT触发器,存储在 tb_Sc表中。 --该触发器的作用是:当用户向sc表中插入记录 时,如果插入了在tb_course表中没有的课程编号 cno,则提示用户不能插入记录,否则提示记录 插入成功
在EDUC数据库中建立一个名为tr_insertstudent的INSERT触发器,存储在tb_Sc表中的SQL语句如下:
```
CREATE TRIGGER tr_insertstudent
ON tb_Sc
AFTER INSERT
AS
BEGIN
DECLARE @cno INT
SELECT @cno = cno FROM inserted
IF NOT EXISTS(SELECT 1 FROM tb_course WHERE cno = @cno)
BEGIN
RAISERROR('不能插入记录,该课程编号不存在', 16, 1)
ROLLBACK
END
ELSE
BEGIN
PRINT '记录插入成功'
END
END
```
该触发器的作用是:当用户向tb_Sc表中插入记录时,如果插入了在tb_course表中没有的课程编号cno,则提示用户不能插入记录,否则提示记录插入成功。
阅读全文