Oracle数据库11g新特性:高效的PL/SQL编码
2008-12-16 13:03:47 来源:WEB开发网请注意在编译期间引发的新警告 PLW-06009.注意,这只是一个警告;编译顺利进行。您可以执行该过程,但应考虑警告状况!
禁用触发器
在可用性较高的生产系统中,您经常会看到一个用于应用更改的狭窄的更改窗口。以下是这些环境中常见的、令人沮丧的“Catch-22”案例:您希望在表中添加一个触发器以便执行脚本,但在更改窗口中创建触发器时,会由于某个愚蠢的、可避免的原因(例如,缺少同义词)而出现编译错误。您希望以前已经创建了触发器,但在您创建触发器时,它是启用状态,这无法在更改窗口以外进行操作。您可以做些什么?
在 Oracle 数据库 11g 中,这种情况不再是一个问题;您可以创建一个最初为禁用状态的触发器,从而允许您测试所有编译错误。稍后,在更改窗口中,您可以启用它。以下是该触发器的创建方法:
create or replace trigger tr_t
after insert on t
for each row
disable
begin
insert into t1 (a) values (:new.col_a);
end;
/
现在,如果您检查状态:SQL> select status 2> from user_triggers 3> where trigger_name = 'TR_T' 4> / STATUS —— DISABLED
即使创建的触发器为禁用状态,它也不能带有错误。因此,如果您尝试创建带有错误的触发器(例如,使用不存在的“M”表):
1 create or replace trigger tr_t
2 after insert on t
3 for each row
4 disable
5 begin
6 insert into m (a) values (:new.col_a);
7* end;
SQL> /
Warning:Trigger created with compilation errors.
SQL> show error
Errors for TRIGGER TR_T:
LINE/COL ERROR
-------- -----------------------------------------------------------------
2/3 PL/SQL:SQL Statement ignored
2/15 PL/SQL:ORA-00942:table or view does not exist
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接