SQL事務 索引 游標 觸發器 分頁查詢

2021-08-20 14:53:15 字數 3187 閱讀 5842

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...