使用视图授予用户对表的一部分的访问权。
您可以按行或列来定义可访问表的哪些部分。例如,您可能希望禁止一组用户查看 Employees 表的 Salary 列,或者可能希望只允许用户查看其已创建的表的行。
销售经理需要访问数据库中有关该部门员工的信息。但是,该经理没有理由访问有关其它部门员工的信息。
为销售经理创建用户 ID,创建可提供其所需信息的视图,并为此销售经理用户 ID 授予相应特权。
GRANT 语句创建新用户 ID。由于用户名是 SQL 关键字,因此需要用引号将其引起来。 CONNECT "GRANT CONNECT TO SalesManager IDENTIFIED BY sales
SELECT 语句会引用该用户 ID 不能识别的表。 CREATE VIEW emp_sales ASSELECT EmployeeID, GivenName, SurnameFROM "DBA".EmployeesWHERE DepartmentID = 200
GRANT SELECT ON emp_sales TO SalesManager
该示例创建一个允许销售经理查看销售订单摘要的视图。定义此视图需要有来自多个表的信息:
CREATE VIEW order_summary ASSELECT OrderDate, Region, SalesRepresentativeFROM "GROUPO".SalesOrdersKEY JOIN "GROUPO".Customers
GRANT SELECTON order_summaryTO SalesManager
SELECT * FROM "GROUPO".emp_sales ;SELECT * FROM "GROUPO".order_summary ;
未授予 SalesManager 查看基础表的特权。因此,这些命令将生成特权错误:
SELECT * FROM "DBA".Employees ;
SELECT * FROM "DBA".SalesOrders;
这些示例说明了如何使用视图来定制 SELECT 特权。您可以使用相同的方法授予对视图的 INSERT、DELETE 和 UPDATE 特权。