哪些视图是可以更新的?哪些视图是不可更新的?各举一例说明。
时间: 2023-06-05 13:48:04 浏览: 377
SQL Server 利用触发器对多表视图进行更新的实现方法
可以更新的视图是指基于单个表或多个表的查询结果,可以通过更新语句修改其中的数据。例如,一个基于单个表的视图,可以通过更新语句修改其中的数据,如下所示:
CREATE VIEW v_employee AS
SELECT emp_id, emp_name, emp_salary
FROM employee
WHERE emp_dept = 'IT';
UPDATE v_employee
SET emp_salary = emp_salary * 1.1
WHERE emp_id = 1001;
不可更新的视图是指基于多个表的查询结果,或者包含聚合函数、DISTINCT、GROUP BY等操作的视图,无法通过更新语句直接修改其中的数据。例如,一个基于多个表的视图,无法通过更新语句修改其中的数据,如下所示:
CREATE VIEW v_employee_dept AS
SELECT emp.emp_id, emp.emp_name, dept.dept_name
FROM employee emp
INNER JOIN department dept ON emp.emp_dept_id = dept.dept_id;
UPDATE v_employee_dept
SET dept_name = 'HR'
WHERE emp_id = 1001;
以上更新语句会报错,因为视图v_employee_dept是基于多个表的查询结果,无法直接修改其中的数据。
阅读全文