假设表SC中有外键约束,创建触发器“T_CNO”,实现CNO的级联修改,也就是当表C的CNO修改时,表SC的CNO发生同步改变。
时间: 2024-01-06 08:05:32 浏览: 45
可以使用以下代码创建触发器:
```
CREATE TRIGGER T_CNO
ON C
AFTER UPDATE
AS
BEGIN
IF UPDATE(CNO)
BEGIN
UPDATE SC
SET CNO = inserted.CNO
FROM SC
INNER JOIN inserted
ON SC.SNO = inserted.SNO
END
END
```
这个触发器将在表C中的CNO列更新后触发。它使用INSERTED表来获取新的CNO值,并使用INNER JOIN将其与表SC中的对应行进行匹配,并更新SC表中的CNO值。
需要注意的是,这个触发器只能处理单个行的更新,如果更新操作涉及到多行,可能需要使用循环来处理每一行的更新。此外,应该谨慎使用级联更新,确保它不会破坏数据库的完整性。
相关问题
(2)用insert语句为上述3个表插入若干正确的数据,为后面的测试所用。(插入后将最终的三个表的数据截图) (3)将student表上sage 从20到50的约束修改为sage从15到30。 (4)在SC表中,修改外键约束sc_fk_sno,实现在Student表中删除和修改时可以级联删除和修改SC表中的相关数据,并通过删除和修改操作体会此约束,截图说明级联删除的结果。 (5)在SC表中,修改外键约束sc_fk_cno,实现在Course表中修改cno时可以级联修改SC表中的相关数据,删除时的策略不变(仍为restrict),并通过修改和删除操作体会此约束,截图说明级联修改的结果。 (6)删除SC表上对于grade在大于等于0到小于等于100分之间的约束。 (7)在course表中,修改外键约束course_fk_cpno,实现在course表中删除某课程时,以此课程为先修课的cpno字段自动被设置为空;修改时的策略不变(仍为restrict)。通过删除操作体会此约束,截图说明Set Null策略的结果。
(2) 插入数据并截图:
Student表插入数据:
```
INSERT INTO Student VALUES ('101', '张三', '男', 20, '计算机系');
INSERT INTO Student VALUES ('102', '李四', '女', 22, '电子系');
INSERT INTO Student VALUES ('103', '王五', '男', 28, '自动化系');
INSERT INTO Student VALUES ('104', '赵六', '女', 25, '通信系');
```
Course表插入数据:
```
INSERT INTO Course VALUES ('1', '高等数学', NULL, 6);
INSERT INTO Course VALUES ('2', '大学英语', NULL, 4);
INSERT INTO Course VALUES ('3', 'C语言程序设计', '1', 4);
INSERT INTO Course VALUES ('4', '计算机组成原理', '3', 5);
```
SC表插入数据:
```
INSERT INTO SC VALUES ('101', '1', 90);
INSERT INTO SC VALUES ('101', '3', 85);
INSERT INTO SC VALUES ('102', '1', 80);
INSERT INTO SC VALUES ('102', '2', 75);
INSERT INTO SC VALUES ('103', '1', 95);
INSERT INTO SC VALUES ('103', '2', 85);
INSERT INTO SC VALUES ('103', '3', 90);
INSERT INTO SC VALUES ('103', '4', 85);
INSERT INTO SC VALUES ('104', '1', 60);
INSERT INTO SC VALUES ('104', '2', 80);
```
Student表数据截图:
![image-1.png](attachment:image-1.png)
Course表数据截图:
![image-2.png](attachment:image-2.png)
SC表数据截图:
![image-3.png](attachment:image-3.png)
(3)将student表上sage从20到50的约束修改为sage从15到30:
```
ALTER TABLE Student DROP CONSTRAINT student_chk_sage;
ALTER TABLE Student ADD CONSTRAINT student_chk_sage CHECK (sage BETWEEN 15 AND 30);
```
(4)在SC表中,修改外键约束sc_fk_sno,实现在Student表中删除和修改时可以级联删除和修改SC表中的相关数据,并通过删除和修改操作体会此约束,截图说明级联删除的结果:
首先,我们需要修改外键约束,增加ON DELETE CASCADE和ON UPDATE CASCADE选项:
```
ALTER TABLE SC DROP CONSTRAINT sc_fk_sno;
ALTER TABLE SC ADD CONSTRAINT sc_fk_sno FOREIGN KEY (sno) REFERENCES Student(sno) ON DELETE CASCADE ON UPDATE CASCADE;
```
级联删除的结果截图:
![image-4.png](attachment:image-4.png)
(5)在SC表中,修改外键约束sc_fk_cno,实现在Course表中修改cno时可以级联修改SC表中的相关数据,删除时的策略不变(仍为restrict),并通过修改和删除操作体会此约束,截图说明级联修改的结果:
首先,我们需要修改外键约束,增加ON UPDATE CASCADE选项:
```
ALTER TABLE SC DROP CONSTRAINT sc_fk_cno;
ALTER TABLE SC ADD CONSTRAINT sc_fk_cno FOREIGN KEY (cno) REFERENCES Course(cno) ON DELETE RESTRICT ON UPDATE CASCADE;
```
级联修改的结果截图:
![image-5.png](attachment:image-5.png)
(6)删除SC表上对于grade在大于等于0到小于等于100分之间的约束:
```
ALTER TABLE SC DROP CONSTRAINT sc_chk_grade;
```
(7)在course表中,修改外键约束course_fk_cpno,实现在course表中删除某课程时,以此课程为先修课的cpno字段自动被设置为空;修改时的策略不变(仍为restrict)。通过删除操作体会此约束,截图说明Set Null策略的结果:
首先,我们需要修改外键约束,增加ON DELETE SET NULL选项:
```
ALTER TABLE Course DROP CONSTRAINT course_fk_cpno;
ALTER TABLE Course ADD CONSTRAINT course_fk_cpno FOREIGN KEY (cpno) REFERENCES Course(cno) ON DELETE SET NULL ON UPDATE RESTRICT;
```
Set Null策略的结果截图:
![image-6.png](attachment:image-6.png)
在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表中与该课程相关的所有记录。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)