sql 修改视图

来源:百度知道 编辑:UC知道 时间:2024/05/20 08:58:20
创建数据库v_em,只显示empolyeeid为14的员工的名字,年龄。并且不允许用户修改员工年龄。
我想要的结果是:
update v_em set age=33
也就是修改年龄的时候会报错。提示不允许修改年龄。
下面是我写的:
create view v_em
as
select employeename,age from employees
where employeeid='20060102'

create trigger u_a
on v_em
instead of update
as
if (select count(age) from deleted )>0
begin
print'不允许修改年龄'
return
end

结果。年龄是不能改了,可是连带的姓名也改不了了。
有人有更好的办法吗?

试过了。不能为一个视图创建两个UPDATE触发器,而且为视图创建的触发器是instead of update 不能写成for update.

CREATE VIEW V_EM
AS

SELECT
employees.Name
employees.Age
FROM
employees
WHERE
employees.employeeid = 14

--该视图本身就不提供修改功能

再写个触发器
create trigger u_a1
on v_em
for update
as
if ((select count(age) from deleted )=0 and (select count(name) from deleted )>0)
begin
update employees
set name=deleted.name
where employeeid='20060102'
end

数据库中视图的值只能通过 select语句从一个或多个表中查询出来的结果,并不能修改值。需要修改值还得到视图引用的表中去改