限制对象创建

要对构建哪些对象以及如何构建对象加以约束,请在下列设置中使用 SPL 例程:
  • 您是数据库的 DBA。
  • 所有其他用户对数据库都具有 Connect 特权。他们不具有 Resource 特权。
  • 使用 DBA 关键字来创建 SPL 例程(或一组 SPL 例程)。
  • SPL 例程(或一组 SPL 例程)按照您定义的方式来创建表、索引和视图。可使用这样的例程来设置培训数据库环境。
SPL 例程可以包括创建一个或多个表和相关联的索引,如以下示例所示:
CREATE DBA PROCEDURE all_objects()

CREATE TABLE learn1 (intone SERIAL, inttwo INT NOT NULL,
      charcol CHAR(10) );
CREATE INDEX learn_ix ON learn1 (inttwo);
CREATE TABLE toys (name CHAR(15) NOT NULL UNIQUE,
      description CHAR(30), on_hand INT);
END PROCEDURE;

要使用 all_objects 过程来控制将列添加至表的操作,请取消所有用户对数据库的 Resource 特权。当用户尝试在此过程外部通过 SQL 语句来创建表、索引或视图时,他们无法完成该操作。当用户执行该过程时,他们具有临时的 DBA 特权,因此,举例来说,CREATE TABLE 语句会成功,并且可以保证对添加的每个列都加以约束。另外,用户创建的对象由那些用户拥有。对于 all_objects 过程,任何执行该过程的人都拥有两个表和索引。