在用戶進行數據更新操作(DML)事務一定會起作用。 事務的出現會保證數據的完整性、一致性。在整個事務的處理過程之中主要使用兩個操作命令: · 事務的提交(COMMIT):是真正的向資料庫之中發出更新指令;· 事務的回滾(ROLLBACK):回滾到最初的狀態。 一但用戶發出了提交事務(commit)指 ...
在用戶進行數據更新操作(DML)事務一定會起作用。
事務的出現會保證數據的完整性、一致性。在整個事務的處理過程之中主要使用兩個操作命令:
· 事務的提交(COMMIT):是真正的向資料庫之中發出更新指令;
· 事務的回滾(ROLLBACK):回滾到最初的狀態。
一但用戶發出了提交事務(commit)指令,那麼所有的數據將被真實性的執行了更新操作。此時將無法使用 rollback
進行回滾。
在 Oracle 之中,每一個連接到資料庫上的用戶,都使用一個 session 的概念表示。每一個 Session 都擁有各自的事務
處理,這個也就是事務的隔離性。
那麼如果說此時,兩個 session 更新同一條數據呢?
範例:第一個 session 執行如下語句
UPDATE myemp SET sal=9000 WHERE empno=7499 ;
第一個 session 執行此語句的時候發現可以正常的提示完成,同時,此時並沒有進行事務的提交或者是回滾。那麼另
外一個 session 也發出了一條更新 7499 雇員的操作。
範例:第二個 session 執行如下語句
UPDATE myemp SET sal=9999 WHERE empno=7499 ;
發現此時執行之後,界面進入到了一個等待的狀態。
行號:ROWNUM
在進行數據的顯示時,用戶可以通過 ROWNUM 這個偽列,動態的生成行的編號。
在 Oracle 裡面 ROWNUM 主要有可以完成兩個任務:
· 取得第一行數據;
· 取得前 N 行數據。
SELECT ROWNUM,empno,ename,job,hiredate FROM emp WHERE deptno=10 AND ROWNUM=1 ; SELECT ROWNUM,empno,ename,job,hiredate FROM emp WHERE ROWNUM<=10 ;
範例:數據的分頁顯示格式 SELECT * FROM ( SELECT 列 [別名] , 列 [別名] , ... , ROWNUM rn FROM 表名稱 [別名] , ... WHERE ROWNUM<=currentPage*lineSize) temp WHERE temp.rn>(currentPage - 1) * lineSize ;
行 ID:ROWID
現在每一行的記錄都發現有自己的數據列,而除了這些數據列之外,還存在有每一行數據的唯一的物理地址,而這
個物理地址就只能夠通過 ROWID 取得。
那麼每一個 ROWID 數據都是包含有存儲數據的,以:“AAAR3qAAEAAAACHAAC”為例做一個簡單解釋:
· “AAAR3q”:數據的對象編號;
· “AAE”:數據保存的相對文件編號;
· “AAAACH”:數據保存的塊號;
· “AAC”:保存的數據行號。
資料庫之中的所有數據都是在磁碟之中,保存,所以來講,根據不同的數據會分配不同的空間,而 ROWID 就可以清
楚的記錄這些空間的信息。