关于模式对象的一些操作技巧
模式对象基本上已经都介绍完了,还需要在做一些扫尾的工作,将一些小的操作技巧稽核在一起介绍一下。因为太小的操作技巧,而且本身的内容也很简单,不值得花费太多的篇幅来记载,所以专门花一篇的篇幅来总结这些东西。
一、用CREATE SCHEMA创建多个对象
Oracle可以使用CREATE SCHEMA语句来同时创建多个对象,用原话就是:Use the CREATE SCHEMA statement to create multiple tables and views and perform multiple grants in your own schema in a single transaction.
操作的语法很简单,看下面的例子就可以完全掌握:
create schema authorization test
create table t11(a int,b int)
create view t111 as select * from t11
grant select on t111 to wangxiaoqi;
需要说明的问题有3点:
1、这个语句不是用来创建schema的,而是创建schema中的对象,即user是需要事先创建好的
2、DBA默认不具备执行其他用户的schema,即必须以authorization后面的user登录方可执行该语句
3、该语句只支持CREATE TABLE、CRAETE VIEW、GRANT三个语句
二、重命名模式对象
绝大多数的object都是可以重命名的,语法是:RENAME ... TO ...
举例(无需指名类型):
rename t11 to t22;
rename t111 to t222;
说明:
1、支持的类型有:table、view、sequence、synonym
2、当rename时,对象的constraint、index也相应更新
3、不支持:PLSQL单元、public synonym、index、cluster
三、删除表和簇
用于删除Oracle中的表的命令有3种,分别是delete、drop、truncate,来看一下各自的语法:
delete from t11; --可以加where子句
drop table t11;
truncate table t11;
关于具体的truncate用法和这三种删除方法的比较,在我之前的文章《Truncate Table介绍》里有比较详细的介绍,可以看哪个内容。
四、启用/停用Trigger
启用和停用触发器的语法也还是比较简单的,看一下吧:
alter trigger xxxx enable;
alter table xxxx enable all trigger;
alter trigger xxxx disable;
alter table xxxx disable all trigger;
触发器的停用,一般是由于以下几个原因:
1、触发器的参照对象当前不可用
2、需要执行大量装载而又不希望激活触发器
3、正在往使用触发器的表里装载数据
需要专门说明的是,以下几种情况,触发器会被隐式激活:
1、在一个相关的表上执行DML
2、在数据库或模式中的对象上执行某DDL语句
3、特殊的数据库时间发生(startup、shutdown、servererror)
五、对象的依赖性
对象如果被修改之后,依赖于它的其它对象很有可能也会受到影响,变成INVALID状态,这个关系比较复杂,用一张图表示:
要将INVALID的OBJECT变为VALID很简单,只需要重新编译即可,语法如下:
alter view xxxx compile;
alter procedure xxxx complie;
alter package xxxx compile body;
alter package xxxx compile package;