事務的介紹(sql語句)

2021-06-27 21:13:37 字數 2159 閱讀 9088

--轉賬案例

--建立銀行戶頭表 檢查戶主金額是否大於1

create table bank

(bid int identity(1,1) primary key,

customername varchar(10),

currentmoney int check(currentmoney>0),

)insert into bank values('張三',1000)

insert into bank values('李四',1)

--未加事務之前

--張三轉1000元給李四

update bank set currentmoney=currentmoney-1000 where bid=1

update bank set currentmoney=currentmoney+1000 where bid=2

select*from bank

delete from bank

--採用事務的方式轉賬 確保資料的安全性和一致性

begin transaction

declare @errorsum int

set @errorsum=0

update bank set currentmoney=currentmoney-800 where bid=1

set @errorsum=@errorsum+@@error

update bank set currentmoney=currentmoney+800 where bid=2

set @errorsum=@errorsum+@@error

--當操作遇到錯誤時

if @errorsum<>0

begin

print'轉賬失敗,請確認後再經行下一步操作'

--事務回滾 恢復到資料原樣

rollback transaction

endelse

begin

commit transaction

endgo

select*from bank

--建立索引的語法

create [unique] [clustered|nonclustered]  

index    currentname

on bank (currentmoney)

--指定索引的填充比重 預設的索引頁大小是4kb x(0--100)

[with fillfactor=x]

--批量修改

update bank set customername='姓名'+customername 

--使用游標

/*建立游標的語法

declare 游標名稱 cursor for select 字段 from表

*/--將學生姓名通過游標操作的方式將其一行行列印

declare stucursor cursor for select stuname from student

declare @stuname varchar(30)

--開啟游標

open stucursor

fetch next from stucursor into @stuname

while @@fetch_status=0

begin

print @stuname

fetch next from stucursor into @stuname

end--關閉游標

close stucursor

--銷毀游標 釋放資料庫伺服器資源

deallocate stucursor

--利用檢視排除表中的敏感資料

select*from bank

create view bankinfo

asselect bid,customername from bank

--使用檢視中不推薦用來增刪改操作 更多的時候用來進行查詢動作

select *from bankinfo

--刪除檢視

if exists(select *from sysobjects where name='bankinfo')

drop view bankinfo

gocreate view bankinfo as

select bid,customername from bank

看事務的sql語句

select a.sid,a.type,a.lmode,b.client info,b.machine,b.osuser from v lock a v session b where a.sid b.sid select from v session where sid 158 select fr...

精妙sql語句介紹

說明 複製表 只複製結構,源表名 a 新錶名 b sql select into b from a where 1 1 說明 拷貝表 拷貝資料,源表名 a 目標表名 b sql insert into b a,b,c select d,e,f from b sql select a.title,a....

精妙SQL語句介紹

說明 複製表 只複製結構,源表名 a 新錶名 b sql select into b from a where 1 1 說明 拷貝表 拷貝資料,源表名 a 目標表名 b sql insert into b a,b,c select d,e,f from b sql select a.title,a....