Alex_McAvoy

想要成为渔夫的猎手

SQL 视图更新

【视图更新】

更新视图是通过 INSERTUPDATEDELETE 来对视图进行操作,由于视图是不实际存储数据的虚表,因此对视图的更新最终要转换为对基本表的更新

像查询视图那样,对视图的更新也是通过视图消解,转换为对基本表的更新

为防止用户通过视图进行更新时,有意无意地对不属于视图范围内的基本表数据进行操作,可以在定义视图时加上 WITH CHECK OPTION 子句,使得在更新数据时,RDBMS 自动检查视图定义中的条件,当不满足时拒绝执行更新操作,关于视图的定义,详见 SQL 视图的数据定义

【实例】

1.插入

例如,向 CS 系学生视图 cs_student 中插入一个新的学生记录(学号:5,姓名:钱七,年龄:20)

1
2
3
INSERT
INTO cs_student
VALUES(5, '钱七', 20);

该语句会转为对基本表的更新

1
2
3
INSERT
INTO student(Sno, Sname, Sage, Sdept)
VALUES(5, '钱七', 20, 'CS');
2.修改

例如,将 CS 系学生视图 cs_student 中学号为 5 的学生姓名改为周八

1
2
3
UPDATE cs_student
SET Sname = '周八'
WHERE Sno = 5;

该语句会转为对基本表的更新

1
2
3
UPDATE student
SET Sname = '周八'
WHERE Sno = 5 AND Sdept = 'CS';
3.删除

例如,删除 CS 系学生视图 cs_student 中学号为 5 的记录

1
2
3
DELETE
FROM cs_student
WHERE Sno = 5;

该语句会转为对基本表的更新

1
2
3
DELETE
FROM student
WHERE Sno = 5 AND Sdept = 'CS';
感谢您对我的支持,让我继续努力分享有用的技术与知识点!