1、在教学数据库teaching中创建触发器,其功能是当删除C表中的课程时,同时删除SC表和TC表中的关于此课程的数据。
时间: 2024-03-20 08:38:53 浏览: 66
可以使用如下的 SQL 语句来创建触发器:
```sql
CREATE TRIGGER trg_delete_course
AFTER DELETE ON C
FOR EACH ROW
BEGIN
DELETE FROM SC WHERE SC.Cno = OLD.Cno;
DELETE FROM TC WHERE TC.Cno = OLD.Cno;
END;
```
该触发器会在 C 表中的课程被删除后自动触发,然后会删除 SC 表和 TC 表中所有关于该课程的数据。值得注意的是,该触发器是在每一行被删除后触发,因此可以保证每个课程的数据都会被正确删除。
相关问题
2、在教学数据库teaching中创建触发器,当修改sc表中的成绩时,要求触发器完成以下任务:当修改后的成绩小于60分时,按照成绩等于60设定,当修改后的成绩大于或等于90分时,按照成绩等于90设定。
可以使用以下SQL语句创建该触发器:
```
CREATE TRIGGER update_sc_trigger
AFTER UPDATE ON sc
FOR EACH ROW
BEGIN
IF NEW.score < 60 THEN
SET NEW.score = 60;
ELSEIF NEW.score >= 90 THEN
SET NEW.score = 90;
END IF;
END;
```
这个触发器会在每次更新sc表中的一行数据时执行。如果新的成绩小于60,那么就将新的成绩设为60;如果新的成绩大于或等于90,那么就将新的成绩设为90。这样就能够保证成绩不会低于60分或高于90分。
使用MySQL,在教学数据库teaching中创建触发器,当修改SC表中的成绩时,要求触发器完成以下任务 (1)当修改后的成绩小于60分时,按照成绩等于60分设定。 (2)当修改后的成绩大于或等于90分时,按照成绩等于90分设定。
可以使用如下的SQL语句来创建该触发器:
```
CREATE TRIGGER update_score
BEFORE UPDATE ON teaching.sc
FOR EACH ROW
BEGIN
IF NEW.score < 60 THEN
SET NEW.score = 60;
ELSEIF NEW.score >= 90 THEN
SET NEW.score = 90;
END IF;
END;
```
该触发器被命名为 `update_score`,在 `teaching` 数据库中的 `sc` 表上进行的 `UPDATE` 操作会触发该触发器。`FOR EACH ROW` 表示该触发器针对每一行数据都会触发。在触发器中,会先判断新的成绩是否小于60分,如果是,则将成绩设为60分;如果成绩大于或等于90分,则将成绩设为90分。`NEW.score` 表示被更新的行的 `score` 字段的新的值。如果希望在修改后能够及时看到结果,可以使用 `AFTER UPDATE` 来代替 `BEFORE UPDATE`。
阅读全文