1.事務主要用來保證資料的合理性和併發處理的能力,利用事務可以實現多個使用者對共享資源的同時訪問
2.事務和執行緒的關係
事務也是通過鎖來解決很多問題
執行緒同步就是通過鎖來解決的synchronized
3.t-sql使用下列語句來管理事務
開始事務:begin transaction
提交事務:commit transaction
回滾(撤銷) 事務:rollback transaction
4.事務的特性(
acid
)
* 原子性(atomicity):原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生
* 一致性(consistency):事務前後資料的完整性必須保持一致。
* 隔離性(isolation):事務的隔離性是指多個使用者併發訪問資料庫時,乙個使用者的事務不能被其它使用者的事務所干擾,多個併發事務間資料要相互隔離。
*永續性(durability):永續性是指乙個事務一旦被提交,它對資料庫中資料的改變就是永久性的,接下來即使資料庫發生故障也不應該對其有任何影響。
5.事務的三種執行模式:
自動提交事務
顯示事務(以begin transaction顯示開始,以commit或rollback顯示結束)
隱性事務
6,事務隔離性:
髒讀:讀到未提交資料
不可重複讀:讀到提交資料
虛讀(幻讀): 讀到插入的資料
* 資料庫共定義了四種隔離級別:
serializable:可避免髒讀,不可重複讀,需讀情況的發生。(序列化)實際是單執行緒操作
repeatable read:可避免髒讀,不可重複讀情況的發生。(可重複讀)mysql 的預設級別
read committed:
可避免髒讀情況的發生(讀已提交)
oracle預設級別
read uncommitted:最低級別,以上情況均無法保證
set transaction isolation level 設定事務隔離級別 如:
set transaction isolation level read committed;
select @@tx_isolation查詢當前事務隔離級別
**操作流程:
set transaction isolation level read uncommitted;//設定安全級別
start transaction;
//乙個事務開始
select * from ***table;
。。。。。
commint;//乙個事務結束
7. 儲存過程 :
定義:
gocreate proc 儲存過程名
@引數as
sql語句1;
sql語句 條件@引數;
go呼叫儲存過程:
execute(執行)語句用來呼叫儲存過程
呼叫的語法:
exec 過程名【引數】 示例:exec proc_stu @引數=賦值
例項
gocreate proc emp_dept
@sal decimal
as select *
from emp
where sal>@sal;
select *
from dept;
goexec emp_dept@sal=2000
8.觸發器分類
按時間分類:1.after觸發器(之後觸發)2.instead of觸發器(之前觸發)
按功能分類:delete觸發器,insert觸發器,update觸發器
觸發器的inserted和deleted表
if object_id('t_transinfo_insert')is not null
drop trigger t_transinfo_insert
greate trigger t_transinfo_insert
on sal_change
for insert
asdeclare @empno int
declare @changesal decimal(7,2)
declare @tran_type nvarchar(20)
select @empno=empno,@changesal=changesal,@tran_type=tran_type
from inserted
if(@tran_type='增加')
update emp set sal=sal+@changesal//當sal是null時,對其加減,任為null,不知如何解決
where empno=@empno
else
update emp set sal=sal-@changesal
where empno=@empno
7.索引:優化查詢
8.游標:分情況處理
9.乙個操作時,會觸發另乙個操作
10.總結:假設每頁顯示n條記錄,當前顯示的是第m頁
1.無排序要求
select top n*
from a
where a_id not in(select top (m-1)*n a_id from a )
2.有排序要求
select top n*
from a
where a_id not in(select top (m-1)*n a_id from a order by xx欄位 desc/asc)
order by xx欄位 desc/asc
觸發器 事務
觸發器 業務是緊密相連的,不可分割的,可以使用觸發器 觸發器的四個要素 1.監視地點 2.監視事件 3.觸發時間 4.觸發事件 after 在之後,當我監視事件發生增刪改以後,進行觸發 before 先完成觸發,再進行增刪改。監視事件之前 建立觸發器的語法 create trigger 觸發器名稱 ...
觸發器 事務
觸發器的關鍵字為trigger,分為inserted 和 deleted 理解觸發器裡面的兩個臨時的表 deleted inserted 注意deleted 與inserted分別表示觸發事件的表 舊的一條記錄 和 新的一條記錄 乙個資料庫系統中有兩個虛擬表用於儲存在表中記錄改動的資訊,分別是 in...
觸發器 事務
觸發器 觸發器為特殊型別的儲存過程,可在執行語言事件時自動生效。sql server 包括三種常規型別的觸發器 dml 觸發器 ddl 觸發器和登入觸發器。當伺服器或資料庫中發生資料定義語言 ddl 事件時將呼叫 ddl 觸發器。登入觸發器將為響應 logon 事件而激發儲存過程。與 sql ser...