Oracle11gr2觸發器依賴判斷增強(一)
在11.1中,Oracle做到了物件的列級依賴,但是觸發器並沒有做到這一點。在11.2的新特性文件中提到了觸發器也具備了列級依賴的能力。
Oracle11新特性——線上操作功能增強(三):http://yangtingkun.itpub.net/post/468/401641
在11.1.0.6上進行的測試:
SQL> create table t (id number);
表已建立。
SQL> create trigger t
2 before update of id on t
3 for each row
4 begin
5 :new.id := 1;
6 end;
7 /
觸發器已建立
SQL> col object_name format a30
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 add name varchar2(30);
表已更改。
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 INVALID
SQL> select * from v$version;
BANNER
-----------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Solaris: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
可以看到雖然觸發器明確指明瞭依賴T的ID列,但是如果T表新增了其他列,仍然會導致觸發器被置於INVALID狀態。
而在11.2中:
SQL> create table t(id number);
表已建立。
SQL> create trigger t
2 before update of id on t
3 for each row
4 begin
5 :new.id := 1;
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 TRIGGER VALID
T TABLE VALID
SQL> alter table t add name varchar2(30);
表已更改。
SQL> select object_name, object_type, status
2 from user_objects
3 where object_name = 'T';
OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
T TRIGGER VALID
T TABLE VALID
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
顯然列級依賴的問題已經實現。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-616191/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle11gr2觸發器依賴判斷增強(二)Oracle觸發器
- 觸發器中控制元件依賴屬性繫結失效觸發器控制元件
- 從原始碼解析vue的響應式原理-依賴收集、依賴觸發原始碼Vue
- Oracle11gr2觸發器新增版本升級功能(一)Oracle觸發器
- Oracle11gr2 AUDIT清除功能增強(一)Oracle
- Oracle11gr2簡易連線增強(一)Oracle
- Oracle11gr2 審計語句增強(一)Oracle
- 命令執行的判斷依據: ; , &&, ||
- Oracle11gr2觸發器新增版本升級功能(二)Oracle觸發器
- update 修改資料時,依賴或者說需要根據另一個值來進行判斷l
- Oracle11gr2 AUDIT清除功能增強(三)Oracle
- Oracle11gr2 AUDIT清除功能增強(四)Oracle
- Oracle11gr2 AUDIT清除功能增強(二)Oracle
- 又一個強大的PHP5.3依賴注入容器PHP依賴注入
- 一個.NET內建依賴注入的小型強化版依賴注入
- PostgreSQL10.0preview功能增強-觸發器函式內建中間表SQLView觸發器函式
- javascript判斷是否是觸屏程式碼JavaScript
- 遊戲陪玩平臺原始碼開發,依賴收集和觸發的實現遊戲原始碼
- 【SQL Server】-- 一觸即發之觸發器SQLServer觸發器
- Oracle11gr2簡易連線增強(二)Oracle
- Oracle11gr2 審計語句增強(二)Oracle
- 觸控板增強工具:Bettertouchtool MacMac
- 觸控板增強神器:Bettertouchtool for MacMac
- Bettertouchtool for Mac觸控板增強工具Mac
- 依賴管理和依賴範圍
- 一, 建立工程,引入依賴
- oracle判斷block corruption的依據是啥?OracleBloC
- 依賴
- 依賴倒置(DIP)與依賴注入(DI)依賴注入
- rimraf 命令強制刪除依賴庫檔案
- Mac觸控板手勢增強工具:MultitouchMac
- Spring Boot 2.6.0正式釋出:預設禁止迴圈依賴、增強Docker映象構建...Spring BootDocker
- Ninject(一)——手動依賴注入依賴注入
- H5觸控事件判斷滑動方向H5事件
- nestjs後端開發實戰(一)——依賴注入JS後端依賴注入
- Maven依賴管理:控制依賴的傳遞Maven
- Maven依賴範圍及依賴傳遞Maven
- 一次依賴注入不慎引發的一連串事故依賴注入