0

我有一个关于观点的问题。简而言之,我必须通过视图更新字段。

A) 创建一个视图,显示每辆车的所有汽车字段和选项数据。确保所有汽车都会出现。

create view carview as
select c.serial, c.cname, c.make, c.model, c.cyear, c.color, c.trim,
c.enginetype, c.purchinv, c.purchdate, c.purchfrom, c.purchcost, c.freightcost,
c.listprice, o.ocode, o.odesc, o.ocost, o.olist
from car c
join baseoption b
on c.serial = b.serial
join options o
on b.ocode = o.ocode

B) 让用户 C 访问视图,然后将视图的权限分配给用户 C 并让用户测试视图。仅查询部分字段。更新汽车的年份并在您的提交中包含响应。

GRANT ALL ON carview TO C;

用户 C 可以访问视图并对其进行选择,但我不知道如何使用用户 C 更新视图。(如果可能的话)

4

1 回答 1

2

我个人不喜欢可更新的视图,但它们是可能的。您在视图上实现 INSTEAD OF 触发器:

http://psoug.org/reference/instead_of_trigger.html

您可以对其进行定制以仅允许特定类型的更新等:

CREATE OR REPLACE <TRIGGER NAME>
INSTEAD OF UPDATE
ON <VIEW>
FOR EACH ROW
BEGIN
    <UPDATE STATEMENT>; 
END <TRIGGER NAME>;
/
于 2013-03-08T20:21:25.713 回答