创建触发器cno_tri,当更改表course中某门课的课程编号时,同时将score表中的课程编号全部自动更改
时间: 2023-12-10 22:38:48 浏览: 106
可以使用以下的 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 表中的 cno 字段被更新时执行。它会将所有 score 表中的 cno 字段值为旧的 cno 的记录更新为新的 cno。其中,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 的记录。这样就实现了级联删除。
阅读全文