数据库--安全性

create table sales(客户代号 char(5)PRIMARY KEY,数量 int null) insert into sales values ('A0001',0) alter procedure modi_m AS declare @i int declare @sl int set transaction isolation level read committed select @i=1 while(@i <=3000) begin begin tran select @sl = 数量 from sales with (tablockx) where 客户代号 = 'A0001' waitfor delay '00:00:00.002' update sales set 数量=@sl - 1 where 客户代号 = 'A0001' commit tran select @i = @i+1 end alter procedure modi_a AS declare @i int declare @sl int set transaction isolation level read committed select @i=1 while(@i <=3000) begin begin tran select @sl = 数量 from sales with (tablockx) where 客户代号 = 'A0001' waitfor delay '00:00:00.002' update sales set 数量=@sl +1 where 客户代号 = 'A0001' commit tran select @i = @i+1 end alter procedure dirt_wroll as declare @i int declare @sl int set transaction isolation level read committed select @i = 1 while(@i <=32000)begin select @i=@i+1 begin tran select @sl = 数量 from sales where 客户代号 = 'A0001' update sales set 数量= @sl+1 where 客户代号='A0001' waitfor delay '00:00:00.001' rollback tran end alter procedure dirt_r as declare @i int declare @sl int set transaction isolation level read committed select @i=1 while(@i<=120000) begin select @i = @i +1 begin tran select @sl = 数量 from sales where 客户代号 = 'A0001' if(@sl <> 0) raiserror('发生了脏读!',16,1) commit tran end alter procedure rep_r as declare @i int declare @sl int declare @s2 int set transaction isolation level repeatable read select @i=1 while(@i<=30000)begin select @i = @i+1 begin tran select @sl = 数量 from sales where 客户代号 = 'A0001' waitfor delay '00:00:00.001' select @s2 = 数量 from sales where 客户代号='A0001' if(@sl <> @s2) raiserror ('发生不可重复读!',16,1) commit tran end alter procedure rep_w as declare @i int declare @s1 int declare @s2 int set transaction isolation level repeatable read select @i = 1 while(@i<=10000) begin begin tran select @s1=数量 from sales where 客户代号 = 'A0001' waitfor delay '00:00:00.002' update sales set 数量 = @s1+1 where 客户代号 = 'A0001' commit tran select @i=@i+1 end update sales set 数量=0 where 客户代号 = 'A0001' select * from sales create procedure huany_I as declare @i int set transaction isolation level repeatable read delete from sales where(客户代号 = 'A1111') select @i = 1 while(@i<=3000) begin begin tran insert into sales (客户代号,数量) values ('A1111',10000) commit tran waitfor delay '00:00:00.001' select @i=@i+1 end create procedure huany_U as declare @i int declare @j int set transaction isolation level repeatable read delete from sales where(客户代号 = 'A1111') select @i = 1 while(@i<=300) begin begin tran update sales set 数量=数量+3 where(客户代号 = 'A1111') select @j = 0 select @j = COUNT(*) from salse where(客户代号 = 'A1111' and 数量=10000) if(@j>0) raiserror('发生了幻影!',16,1) commit tran waitfor delay '00:00:00.001' select @i=@i+1 end
全部评论

相关推荐

在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务