唯讀事務
唯讀事務是指只允許執行
查詢操作,而不允許執行任何的dml(增、刪、改)操作的事務。使用唯讀事務可以確保使用者只能取個時刻的資料。
機票代售業務,每天的乙個時刻統計今天的銷售量,這個就使用唯讀事務,
設定唯讀事務以後,儘管其他繪畫可能會提交事務,但是唯讀事務將不再取最新資料的變化,從而保證可以取的特定時間點的資料資訊。
設定唯讀事務 s
et transaction read only
sql函式的使用
字元函式
字元函式式oracle中最長用的函式:
1. lower(char):將字串轉化成小寫的格式
2. upper(char):
將字串轉化成大寫的格式
3. length(char):
返回字串的長度
4. substr(char,m,n):
取字串的字串
例子1. 將所有員工的名字按照小寫的方式顯
select
lower(ename) from emp;
2. 將所有員工的名字按照大寫的方式顯示
select
upper(ename) from emp;
3. 顯示正好為6個字元的員工的姓名
select
*from
emp
where
length(ename)=6;
4. 顯示所有員工名字的前4個字元
select
substr(ename,1,4)
from
emp ;
5. 以首字母大寫的方式顯示所有員工的姓名
select
upper(substr(ename,1,1))
from
emp;
6. 以首字母大寫後面字母為小寫的方式顯示所有員工的姓名
a. 取出首字母為大寫:
select
upper(substr(ename,1,1))
from
emp;
b. 第二個字元到最後為小寫:select lower(
substr(ename,2,length(ename)-1
)from emp;
c. select
upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1)) from emp;
d. 合併這兩個內容:
select upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1))from emp;
replace (修改的字段,『原字元』,『修改後的字元』);
名字中的a替換成&
select replace
(ename ,'a','&')
from
emp ;
instr
(char_1,char_2,[n[,m]])取出字串在字串中的位置
數學函式
數學函式的輸入引數和返回值得資料型別都是數字型別。數學函式包括:
cos,cosh,exp,ln,log,sin,sinh,sqrt,tan,tanh,acos,asin,atan,round,
最常用的:
1. round(n,[m]);
用於執行四捨五入,如果去掉m就是四捨五入到整數,
m為正數的時候,則四捨五入到小數點的
m位後,如果為負數則四捨五入到小數點的
m位前。
select ename ,(round(sal)+round(comm))*13 from emp;
select ename ,
(round(sal,1)
+round(comm))*13 from emp;
2. trunk
(n,[m]);
用於擷取數字,如果省掉m,就擷取小數部分,如過
m是正數就擷取到小數點的
m位後,如果
m是負數,則擷取到小數點的前m位
select ename ,
trunc(comm,2)
, comm from emp where ename='
小雞';
3. mod(m,n);
取模函式
select
mod(10,2)
from dual;\\
dual表是用來測試的表(亞元表)再做
oracle
測試的,虛擬的表
4. floor(n);
返回小於或是等於n的最大整數(再這個整數向下取整)
select ename ,
floor(comm)
,comm
from emp where ename=
』scott』;
5. ceil(n);
返回大於或者等於n的最小整數(再這個整數向上取整)
select ename ,
ceil(comm)
,comm
from emp where ename=
』scott』;
對數字的處理,長用再財務系統和銀行系統中,不同的處理方法,對財務的報表有不同的結果。
顯示在乙個月為30天的情況下所有員工的日薪。忽略餘數。
select
trunc(sal/30)
,ename from emp;
select
floor
(sal/30)
,ename from emp;
事務 唯讀事務
b 沒有事務 b 保證了sql語句級別的讀一致性。即在一條sql語句執行期間,它只會看到執行前點的資料狀態,而不會看到執行期間資料被其他sql改變的狀態。存在的問題 比如你做乙個報表查詢,在執行完第一條sql的時候,執行第二條查詢sql,而這個之間有資料被改變了,第二條資料查詢就有可能不一致 b 唯...
唯讀事務和沒有事務
在專案中看到 transactional readonly true 註解 該屬性用於設定當前事務是否為唯讀事務,設定為 true 表示唯讀,false 則表示可讀寫,預設值為 false 例如 transactional readonly true 了解到是唯讀事務,網上搜了下唯讀事務和沒有事務的...
oracle唯讀事務
一致性讀是oracle區別於其他資料庫的重要特點之一,但一般來說,這個一致性讀是sql級別的,只針對單個sql有效。由於業務邏輯需要,我們可能需要在乙個事務中的多個sql也能實現讀一致性,也就是說,資料來源在事務開始時就定下來了,不受其他會話影響。oracle的唯讀事務可以實現這個功能,它可以在事務...