创建触发器cno_tri,当更改表course中某门课的课程编号时,同时将score表中的课程编号全部自动更改。
时间: 2023-12-03 10:45:28 浏览: 79
可以使用以下 SQL 语句创建触发器:
```sql
CREATE TRIGGER cno_tri
AFTER UPDATE ON course
FOR EACH ROW
BEGIN
UPDATE score SET cno = NEW.cno WHERE cno = OLD.cno;
END;
```
这个触发器会在每次更新 course 表中的一行时触发,将 score 表中所有与旧的课程编号相同的记录的课程编号更新为新的课程编号。其中 `NEW` 和 `OLD` 分别代表新的和旧的行数据。
相关问题
在course表上创建触发器del_trig,当course表上删除一门课程时,级联删除sc表该课程的记录
您可以使用以下SQL语句在MySQL数据库上创建一个名为del_trig的触发器:
```
CREATE TRIGGER del_trig BEFORE DELETE ON course
FOR EACH ROW
BEGIN
DELETE FROM sc WHERE cno = OLD.cno;
END;
```
在这个触发器中,我们定义在删除course表中的一条记录之前执行的操作。在这个例子中,我们使用级联删除,删除sc表中与该课程相关的所有记录。
创建与 grade 表相同的表 sc;在 course 表上创建触发器 del_trig,当 course 表上 删除一门课程时,级联删除 sc 表该课程的记录
创建表 sc 的 SQL 语句如下:
```
CREATE TABLE sc (
sno CHAR(10) NOT NULL,
cno CHAR(10) NOT NULL,
grade INT NOT NULL,
PRIMARY KEY (sno, cno),
FOREIGN KEY (sno) REFERENCES student(sno),
FOREIGN KEY (cno) REFERENCES course(cno)
);
```
创建触发器 del_trig 的 SQL 语句如下:
```
CREATE TRIGGER del_trig
BEFORE DELETE ON course
FOR EACH ROW
BEGIN
DELETE FROM sc WHERE cno = OLD.cno;
END;
```
这个触发器会在 course 表上删除一门课程时触发,然后删除 sc 表中所有 cno 等于该课程 cno 的记录。这样就实现了级联删除。
阅读全文