'李偉'
select
@borrnum
=borrnum from borrow order
by borrnum +
1select
@bno
=bno from book where btitle=
'資料結構'
select
@num
=count
(bno)
from borrow where bno=
@bno
and returndate is
null
if@num
<
5begin
insert
into borrow(borrnum,rno,bno,borrowdate)
values
(@borrnum
,@rno
,@bno
,@borrowdate
)commit
'李偉可以借閱資料結構'
endelse
begin
rollback
transaction
'此書已經被借閱完'
endgo
commit就是將資料庫中的資料提交到回滾段中,會覆蓋原先資料
rollback就是將回滾段中的資料回滾到資料庫中,不會覆蓋資料,不管先前有沒有設定回滾點,rollback回滾的資料都不會變,除非commit覆蓋了原先的資料
由第二題可以清楚地看出來
read uncommitted
讀未提交,顧名思義,就是乙個事務可以讀取另乙個未提交事務的資料。可能會髒讀。
read committed
讀提交,顧名思義,就是乙個事務要等另乙個事務提交後才能讀取資料。
可能會不可重複讀
repeatable read
重複讀,就是在開始讀取資料(事務開啟)時,不再允許修改操作
可能會幻讀
serializable 序列化
serializable 是最高的事務隔離級別,在該級別下,事務序列化順序執行,可以避免髒讀、不可重複讀與幻讀。但是這種事務隔離級別效率低下,比較耗資料庫效能,一般不使用。
設計的實驗:在兩個查詢視窗中分別建立名稱為
trans1和trans2的事務,在trans1中先後設定不同的事務隔離級別,執行兩次查詢語句,在trans2的事務中執行更新語句,比較執行結果。
begin
transaction trans1
use library1
goset
transaction
isolation
level
repeatable
read
select
*from reader where rname=
'王小明'
waitfor delay'00:00:10'
;select
*from reader where rname=
'王小明'
gocommit
transaction trans1
gobegin
transaction trans2
use library1
goupdate reader set rage=
24where rname=
'王小明'
gocommit
transaction trans2
go
sqlserver資料庫實驗一
1.一些sql語法sqlserver並不支援 2.當用insert插入date型資料的時候,要用單引號括起來 values 2012 10 1 3.增加乙個新的字段 alter table 表名稱 add 欄位名 字段型別 null not null 4.更新字段 update 表名稱 set 欄位...
資料庫之SQLServer
sqlserver更改身份驗證方式 sqlserver中char varchar nchar nvarchar的區別 1 定義 char 固定長度,儲存ansi字元,不足的補英文半形空格。nchar 固定長度,儲存unicode字元,不足的補英文半形空格 varchar 可變長度,儲存ansi字元,...
SQL Server之資料庫複製
sql server中備份,除了映象方式外還有複製方式。sqlserver 2012中還引進了alwayson,並且官方建議不再使用映象 資料庫複製 概述 複製是一組技術,它將資料和資料庫物件從乙個資料庫複製和分發到另乙個資料庫,然後在資料庫之間進行同步以保持一致性。使用複製,可以在區域網和廣域網 ...