forked from uytran36/demo-deadlock
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Transaction 2.sql
234 lines (201 loc) · 4.2 KB
/
Transaction 2.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
create procedure sp_dirtyRead_trangThai2
as
begin
begin try
begin tran t2
select * from Nha where MaNha = '1'
commit tran t2
end try
begin catch
print N'Nỗi'
end catch
end
go
set transaction isolation level read committed
exec sp_dirtyRead_trangThai2
--------------------------------------------------------
create procedure sp_dirtyRead_lichSuXem2
as
begin
begin try
begin tran t2
select * from Xem where MaNha = '1'
commit tran t2
end try
begin catch
print N'Nỗi'
end catch
end
go
set transaction isolation level read committed
exec sp_dirtyRead_lichSuXem2
--------------------------------------------------------
create procedure sp_dirtyRead_chuNha2
as
begin
begin try
begin tran t2
select * from ChuNha where MaChuNha = '1'
commit tran t2
end try
begin catch
print N'Nỗi'
end catch
end
go
set transaction isolation level read committed
exec sp_dirtyRead_chuNha2
---------------------------------------------
CREATE PROCEDURE sp_unrepeatableRead_sdt2
AS
BEGIN
Begin try
begin Tran t2
select * from ChuNha where MaChuNha = '1'
update ChuNha set SoDienThoai = '002' where MaChuNha = '1'
commit tran t2
end try
begin catch
print N'Lỗi'
end catch
END
exec sp_unrepeatableRead_sdt2
---------------------------------------------
CREATE PROCEDURE sp_unrepeatableRead_diaChi2
AS
BEGIN
Begin try
begin Tran t2
select * from KhachHang where MaKhachHang = '1'
update KhachHang set Duong = N'Nguyễn Du' where MaKhachHang = '1'
commit tran t2
end try
begin catch
print N'Lỗi'
end catch
END
exec sp_unrepeatableRead_diaChi2
---------------------------------------------
CREATE PROCEDURE sp_unrepeatableRead_tinhTrang2
AS
BEGIN
Begin try
begin Tran t2
select * from Nha where MaNha = '1'
update Nha set TinhTrang = 3 where MaNha = '1'
commit tran t2
end try
begin catch
print N'Lỗi'
end catch
END
exec sp_unrepeatableRead_tinhTrang2
---------------------------------------------
create procedure sp_phantom_nhanXet2
as
begin
begin try
begin tran t2
select * from ChiTietNhanXet where MaNha = '1'
insert into ChiTietNhanXet values('5', '1', '1', 'Nhan xet 2')
commit tran t2
end try
begin catch
print N'Lỗi'
end catch
end
go
exec sp_phantom_nhanXet2
---------------------------------------------
create procedure sp_phantom_dsNha2
as
begin
begin try
begin tran t2
select * from Nha
insert into Nha values('2', '2', '2', '2', '2', 2, 3, 1, '01/02/2003', '01/02/2005', '1', '1', '1', '1', '1', 0)
commit tran t2
end try
begin catch
print N'Lỗi'
end catch
end
go
exec sp_phantom_dsNha2
---------------------------------------------
create procedure sp_phantom_lsXem2
as
begin
begin try
begin tran t2
select * from Xem
insert into Xem values('2', '1', '1', '01/02/2018');
commit tran t2
end try
begin catch
print N'Lỗi'
end catch
end
go
exec sp_phantom_lsXem2
---------------------------------------------
CREATE PROCEDURE sp_lostUpdate_nhanXet2
AS
BEGIN
declare @nd nvarchar(255)
Begin try
set @nd = 'ABCD'
begin Tran t2
select * from ChiTietNhanXet WITH (XLOCK, ROWLOCK) where MaNhanXet = '1'
update ChiTietNhanXet set NoiDung = N'ABCD' where MaNhanXet = '1'
commit Tran t2
end try
begin catch
print N'Lỗi'
end catch
END
GO
Select * from ChiTietNhanXet where MaNhanXet = '1'
exec sp_lostUpdate_nhanXet2
drop proc sp_lostUpdate_nhanXet2
----------------------------------------------------------------
CREATE PROCEDURE sp_lostUpdate_sdt2
AS
BEGIN
declare @sdt nchar(10)
Begin try
set @sdt = '12345'
begin Tran t2
select * from ChuNha WITH (XLOCK, ROWLOCK) where MaChuNha = '1'
update ChuNha set SoDienThoai = @sdt where MaChuNha = '1'
commit Tran t2
end try
begin catch
print N'Lỗi'
end catch
END
GO
Select * from ChuNha where MaChuNha = '1'
exec sp_lostUpdate_sdt2
drop procedure sp_lostUpdate_sdt2
----------------------------------------------------------------
CREATE PROCEDURE sp_lostUpdate_luotXem2
AS
BEGIN
declare @SLX int
Begin try
begin Tran t2
select @SLX = SoLuotXem from Nha WITH (XLOCK, ROWLOCK) where MaNha = '1'
Set @SLX = @SLX + 1
update Nha set SoLuotXem = @SLX where MaNha = '1'
commit Tran t2
end try
begin catch
print N'Lỗi'
end catch
END
GO
select * from Nha where MaNha = '1'
exec sp_lostUpdate_luotXem2
drop proc sp_lostUpdate_luotXem2