Oracle11gr2觸發器新增版本升級功能(二)
Oracle11gr2增加了版本升級觸發器功能。
這篇簡單描述一個利用CROSSEDITION觸發器降級版本的例子。
Oracle11gr2觸發器新增版本升級功能(一):http://yangtingkun.itpub.net/post/468/495673
描述一個簡單的降級的例子,這個例子時接著上一篇文章:
SQL> ALTER DATABASE DEFAULT EDITION = E_1;
資料庫已更改。
SQL> CONN YANGTK
輸入口令:
已連線。
SQL> SELECT SYS_CONTEXT('USERENV', 'CURRENT_EDITION_NAME') FROM DUAL;
SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
---------------------------------------------
E_1
當前的系統狀態就是升級後的狀態,如果發現升級後存在問題,需要降級版本,那麼可以採用下面的方法:
SQL> ALTER SESSION SET EDITION = ORA$BASE;
會話已更改。
SQL> SELECT SYS_CONTEXT('USERENV', 'CURRENT_EDITION_NAME') FROM DUAL;
SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
---------------------------------------------
ORA$BASE
SQL> CREATE TRIGGER T_CROSSEDITION_PERSON
2 BEFORE INSERT OR UPDATE ON T_PERSON
3 FOR EACH ROW
4 REVERSE CROSSEDITION
5 BEGIN
6 :NEW.FULL_NAME := NULL;
7 END;
8 /
觸發器已建立
建立一個用於降級的觸發器,下面監測觸發器的工作,不過首先要刪除上一篇文章中建立的升級的觸發器,避免二個CROSSEDITION之間相互干擾:
SQL> ALTER SESSION SET EDITION = E_1;
會話已更改。
SQL> DROP TRIGGER T_CROSSEDITION_PERSON;
觸發器已刪除。
SQL> INSERT INTO T_PERSON
2 VALUES (18, 'A', 'B', 'AB');
已建立 1 行。
SQL> SELECT *
2 FROM T_PERSON
3 WHERE ID = 18;
ID FIRST_NAME LAST_NAME FULL_NAME
---------- --------------------- --------------- ------------------------------------
18 A B
SQL> COMMIT;
提交完成。
SQL> ALTER SESSION SET EDITION = ORA$BASE;
會話已更改。
SQL> SELECT * FROM T_PERSON;
ID FIRST_NAME LAST_NAME FULL_NAME
---------- --------------------- --------------- ------------------------------------
1 T VIEW
2 T_TABLE TABLE
3 T_TABLE TRIGGER
4 T_MYTEST TYPE
5 FORCE TYPE
6 T_TYPE TYPE
7 ABC TABLE
8 S_1 SYNONYM
9 T1 TABLE
10 S_MY_EDITION SYNONYM
11 T_PERSON TABLE
12 SYS_C0011140 INDEX
13 T_LOG TABLE
14 T TRIGGER
15 TEST.US.ORACLE.COM DATABASE LINK TEST.US.ORACLE.COMDATABASE LINK
16 T_CROSSEDITION_PERSON TRIGGER T_CROSSEDITION_PERSONTRIGGER
17 TEST TEST
18 A B
已選擇18行。
SQL> UPDATE T_PERSON
2 SET LAST_NAME = 'REVERSE'
3 WHERE ID = 16;
已更新 1 行。
SQL> SELECT *
2 FROM T_PERSON
3 WHERE ID = 16;
ID FIRST_NAME LAST_NAME FULL_NAME
---------- --------------------- --------------- ------------------------------------
16 T_CROSSEDITION_PERSON REVERSE
SQL> COMMIT;
提交完成。
可以看到,這個觸發器在子版本和當前版本中都是生效的。
SQL> ALTER DATABASE DEFAULT EDITION = ORA$BASE;
資料庫已更改。
SQL> DROP TRIGGER T_CROSSEDITION_PERSON;
觸發器已刪除。
SQL> ALTER TABLE T_PERSON DROP COLUMN FULL_NAME;
表已更改。
將系統的預設版本修改為降級後的版本,確保以後使用者都使用降級後的版本,然後就可以刪除CROSSEDITION觸發器,並最終刪除升級時新增的列。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-624628/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle11gr2觸發器新增版本升級功能(一)Oracle觸發器
- Oracle11gr2新增版本功能(二)Oracle
- Oracle11gr2新增版本功能(一)Oracle
- Oracle11gr2新增版本功能(三)Oracle
- Oracle11gr2觸發器依賴判斷增強(二)Oracle觸發器
- 【版本升級】PerfDog新增多維度測試報告對比功能、iOS電量測試功能升級測試報告iOS
- Oracle觸發器觸發級別Oracle觸發器
- SQL觸發器(二)SQL觸發器
- Oracle Database 12c 版本 1 (12.1) 升級新增功能 (文件 ID 1602865.1)OracleDatabase
- 不限畫幅!微信新版本升級影片功能
- Oracle11gr2新增CREATE OR REPLACE FORCE TYPE功能Oracle
- Oracle11gr2觸發器依賴判斷增強(一)Oracle觸發器
- node 版本升級
- gcc版本升級GC
- NiFi版本升級Nifi
- [打怪升級]小程式評論回覆和發帖功能實戰(二)
- Oracle11gr2新增遞迴WITH語句(二)Oracle遞迴
- 觸寶電話釋出V5.4.5版本 新增回撥功能
- python版本升級Python
- iOS CoreData (二) 版本升級和資料庫遷移iOS資料庫
- 使用FGA實現SELECT觸發器功能觸發器
- Oracle11gr2 AUDIT清除功能增強(二)Oracle
- 如何升級電腦windows版本 windows系統版本升級方法介紹Windows
- Win10怎麼升級版本 Win10升級版本的方法Win10
- YourSQLDba版本升級總結SQL
- GitLab跨版本升級Gitlab
- Redis的跨版本升級Redis
- Homestead 升級PHP版本PHP
- Mac brew 升級 PHP版本MacPHP
- 如何升級fedora的版本
- 升級mac的PHP版本MacPHP
- centos 7 版本升級nginxCentOSNginx
- cassandra升級版本選擇
- nginx 版本升級 轉載Nginx
- JN專案-觸發器級聯刪除觸發器
- SQL Server資料庫級別觸發器SQLServer資料庫觸發器
- Node 快速切換版本、版本回退(降級)、版本更新(升級)
- erp軟體31.86版本與其他版本有何不同?升級哪些新功能?