Oracle11gr2觸發器依賴判斷增強(二)

yangtingkun發表於2009-10-10

11.1中,Oracle做到了物件的列級依賴,但是觸發器並沒有做到這一點。在11.2的新特性文件中提到了觸發器也具備了列級依賴的能力。

這一篇介紹觸發器列級依賴存在的問題。

Oracle11gr2觸發器依賴判斷增強(一):http://yangtingkun.itpub.net/post/468/492503

Oracle11新特性——線上操作功能增強(三):http://yangtingkun.itpub.net/post/468/401641

 

 

前面一篇文章介紹了觸發器的依賴,但是這種依賴是對於觸發器的依賴。如果觸發器執行的語句中,依賴了其他物件,是否也能像儲存過程那樣做到列級依賴呢:

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> create table t (id number, name varchar2(30));

表已建立。

SQL> create table t_log (id number);

表已建立。

SQL> create trigger t
  2  before insert on t
  3  for each row
  4  begin
  5  insert into t_log (id) values (:new.id);
  6  end;
  7  /

觸發器已建立

SQL> select object_name, object_type, status
  2  from user_objects
  3  where object_name = 'T';

OBJECT_NAME                    OBJECT_TYPE         STATUS
------------------------------ ------------------- -------
T                              TABLE               VALID
T                              TRIGGER             VALID

SQL> alter table t_log add (create_date date default sysdate not null);

表已更改。

SQL> select object_name, object_type, status
  2  from user_objects
  3  where object_name = 'T';

OBJECT_NAME                    OBJECT_TYPE         STATUS
------------------------------ ------------------- -------
T                              TRIGGER             INVALID
T                              TABLE               VALID

顯然觸發器的列級依賴只是針對觸發表,而觸發器執行語句中依賴的物件並沒有做到列級觸發。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-616242/,如需轉載,請註明出處,否則將追究法律責任。

相關文章