Advertisement
Guest User

Untitled

a guest
May 20th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 11.18 KB | None | 0 0
  1.  
  2. ---------------1-----------------
  3. alter procedure AddLansare
  4. @Nume varchar(100),
  5. @data varchar(100),
  6. @titluPiesa varchar(100)
  7. as
  8. begin
  9.     begin tran
  10.     begin try
  11.         declare @idArtist int
  12.         declare @idMelodie int
  13.  
  14.         if(dbo.validare_nume(@nume)<>1)
  15.         begin
  16.             print('invalid name')
  17.             RAISERROR('invalid name',14,1)
  18.         end
  19.         insert into Artisti values(@Nume,3)
  20.         set @idArtist=SCOPE_IDENTITY()
  21.         print('insert artist')
  22.        
  23.  
  24.         if(dbo.validare_nume(@titluPiesa)<>1)
  25.         begin
  26.             print('invalid title')
  27.             RAISERROR('invalid title',14,1)
  28.         end
  29.         insert into Melodii values(@titluPiesa,2)
  30.         set @idMelodie=SCOPE_IDENTITY()
  31.         print('insert melodie')
  32.  
  33.         if(dbo.validare_DataCalendaristica(@data)<>1)
  34.         begin
  35.             print('invalid client data')
  36.             RAISERROR('invalid client data',14,1)
  37.         end
  38.         print('lansare valida')
  39.         insert into Lansare values(@idArtist,@idMelodie,@data)
  40.         print('insert lansare')
  41.  
  42.         commit tran
  43.         print('ok')
  44.         select 'Transaction commited'
  45.  
  46.     end try
  47.     begin catch
  48.         rollback tran
  49.         select 'Transaction rolled back'
  50.     end catch
  51. end
  52.  
  53. select * from Artisti
  54. select * from Melodii
  55. select * from Lansare
  56. exec AddLansare 'George','04/04/2019','Ambigu'
  57.  
  58. select * from Artisti
  59. select * from Melodii
  60. select * from Lansare
  61. exec AddLansare 'George','--','Ambigu'
  62. select * from Artisti
  63. select * from Melodii
  64. select * from Lansare
  65. ------------------2---------------
  66. alter procedure AddLansare2
  67. @Nume varchar(100),
  68. @data varchar(100),
  69. @titluPiesa varchar(100)
  70. as
  71. begin
  72.     declare @ok int
  73.     set @ok=1
  74.     declare @idArtist int
  75.     declare @idMelodie int
  76.  
  77.     begin tran
  78.     begin try
  79.         if(dbo.validare_nume(@nume)<>1)
  80.         begin
  81.             print('invalid artist name')
  82.             RAISERROR('invalid client data',14,1)
  83.         end
  84.  
  85.         insert into Artisti values(@Nume,3)
  86.         commit tran
  87.         set @idArtist=SCOPE_IDENTITY()
  88.         print('insert artist')
  89.         end try
  90.         begin catch
  91.             set @ok=0
  92.             rollback tran
  93.             select 'Transaction rolled back at client'
  94.         end catch
  95.  
  96.         begin tran
  97.         begin try
  98.         if(dbo.validare_nume(@titluPiesa)<>1)
  99.         begin
  100.         print('invalid song title')
  101.             RAISERROR('invalid item data',14,1)
  102.         end
  103.  
  104.        
  105.         insert into Melodii values(@titluPiesa,3)
  106.         set @idMelodie=SCOPE_IDENTITY()
  107.         commit tran
  108.         print('insert song')
  109.  
  110.         end try
  111.         begin catch
  112.             set @ok =0
  113.             rollback tran
  114.             select 'Transaction rolled back at song'
  115.         end catch
  116.  
  117.         begin tran
  118.         begin try
  119.         if(dbo.validare_DataCalendaristica(@data)<>1)
  120.         begin
  121.             print('invalid launch data')
  122.             RAISERROR('invalid launch data',14,1)
  123.         end
  124.         print('lansare valida')
  125.         insert into Lansare values(@idArtist,@idMelodie,@data)
  126.         print('insert lansare')
  127.  
  128.         if @ok <> 1
  129.         begin
  130.             return
  131.         end
  132.  
  133.         commit tran
  134.         print('ok')
  135.         select 'Transaction commited'
  136.         end try
  137.         begin catch
  138.             rollback tran
  139.             select 'Transaction rolled back at lansare'
  140.         end catch
  141. end
  142.  
  143. select * from Artisti
  144. select * from Melodii
  145. select * from Lansare
  146. exec AddLansare2 'Alin','04/04/2019','Piesa1'
  147.  
  148. select * from Artisti
  149. select * from Melodii
  150. select * from Lansare
  151. exec AddLansare2 'Alin','--','Piesa1'
  152. select * from Artisti
  153. select * from Melodii
  154. select * from Lansare
  155.  
  156. delete from Artisti where ArtistID=21
  157. delete from Melodii where MelodieID=19
  158. delete from Lansare where ArtistID=21
  159.  
  160. -----------------3------------
  161. ---Dirty Reads
  162. BEGIN TRANSACTION
  163. UPDATE Impresar set Nume='Alexandru'
  164. WHERE ImpresarID=5
  165. WAITFOR DELAY '00:00:10'
  166. ROLLBACK TRANSACTION
  167.  
  168. ---Dirty Reads
  169. SET TRANSACTION ISOLATION LEVEL READ
  170. UNCOMMITTED
  171. BEGIN TRAN
  172. SELECT * FROM Impresar
  173. WAITFOR DELAY '00:00:15'
  174. SELECT * FROM Impresar
  175. COMMIT TRAN
  176.  
  177. --sol:set transaction isolation level to read committed
  178.  
  179. SET TRANSACTION ISOLATION LEVEL READ COMMITTED
  180. BEGIN TRAN
  181. SELECT * FROM Impresar
  182. WAITFOR DELAY '00:00:15'
  183. SELECT * FROM Impresar
  184. COMMIT TRAN
  185.  
  186. --Non repeatable
  187. INSERT INTO Impresar values('Eusebiu')
  188. BEGIN TRAN
  189. WAITFOR DELAY '00:00:05'
  190. UPDATE Impresar SET Nume='aaaa' where
  191. Nume = 'Eusebiu'
  192. COMMIT TRAN
  193.  
  194. -- Non repeatable 2
  195. SET TRANSACTION ISOLATION LEVEL READ
  196. COMMITTED
  197. BEGIN TRAN
  198. SELECT * FROM Impresar
  199. WAITFOR DELAY '00:00:05'
  200. SELECT * FROM Impresar
  201. COMMIT TRAN
  202.  
  203. ---non repeatable sol
  204. SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
  205. BEGIN TRAN
  206. SELECT * FROM Impresar
  207. WAITFOR DELAY '00:00:05'
  208. SELECT * FROM Impresar
  209. COMMIT TRAN
  210.  
  211. --Phantom Reads
  212. BEGIN TRAN
  213. WAITFOR DELAY '00:00:04'
  214. INSERT INTO Impresar VALUES('Bogdan')
  215. COMMIT TRAN
  216.  
  217. --Phantom Reads
  218. SET TRANSACTION ISOLATION LEVEL REPEATABLE
  219. READ
  220. BEGIN TRAN
  221. SELECT * FROM Impresar
  222. WAITFOR DELAY '00:00:05'
  223. SELECT * FROM Impresar
  224. COMMIT TRAN
  225.  
  226. -- Phantom reads SOLUTION
  227. SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
  228. BEGIN TRAN
  229. SELECT * FROM Impresar
  230. WAITFOR DELAY '00:00:05'
  231. SELECT * FROM Impresar
  232. COMMIT TRAN
  233.  
  234. ---DEADLOCK
  235.  
  236. --transaction 1
  237. begin tran
  238. update Locatie set Tara='Dead'
  239. waitfor delay '00:00:10'
  240. update Concerte set DataConcert='04/04/2012'
  241. commit tran
  242.  
  243. --transaction 2
  244. begin tran
  245. update Concerte set DataConcert='04/04/2012'
  246. waitfor delay '00:00:10'
  247. update Locatie set Tara='Dead'
  248. commit tran
  249.  
  250. --DEADLOCK SOLUTION
  251. SET DEADLOCK_PRIORITY HIGH
  252. begin tran
  253. update Locatie set Tara='Dead'
  254. waitfor delay '00:00:10'
  255. update Concerte set DataConcert='04/04/2012'
  256. commit tran
  257.  
  258.  
  259.  
  260. create procedure Dead1 as
  261. begin
  262.     begin tran
  263.     update Concerte set DataConcert='04/04/2012'
  264.     waitfor delay '00:00:10'
  265.     update Locatie set Tara='Dead'
  266.     commit tran
  267. end
  268.  
  269. create procedure Dead2 as
  270. begin
  271.     SET DEADLOCK_PRIORITY HIGH
  272.     begin tran
  273.     update Locatie set Tara='Dead'
  274.     waitfor delay '00:00:10'
  275.     update Concerte set DataConcert='04/04/2012'
  276.     commit tran
  277. end
  278.  
  279. exec Dead1
  280. exec Dead2
  281. ---------------1-----------------
  282. alter procedure AddLansare
  283. @Nume varchar(100),
  284. @data varchar(100),
  285. @titluPiesa varchar(100)
  286. as
  287. begin
  288.     begin tran
  289.     begin try
  290.         declare @idArtist int
  291.         declare @idMelodie int
  292.  
  293.         if(dbo.validare_nume(@nume)<>1)
  294.         begin
  295.             print('invalid name')
  296.             RAISERROR('invalid name',14,1)
  297.         end
  298.         insert into Artisti values(@Nume,3)
  299.         set @idArtist=SCOPE_IDENTITY()
  300.         print('insert artist')
  301.        
  302.  
  303.         if(dbo.validare_nume(@titluPiesa)<>1)
  304.         begin
  305.             print('invalid title')
  306.             RAISERROR('invalid title',14,1)
  307.         end
  308.         insert into Melodii values(@titluPiesa,2)
  309.         set @idMelodie=SCOPE_IDENTITY()
  310.         print('insert melodie')
  311.  
  312.         if(dbo.validare_DataCalendaristica(@data)<>1)
  313.         begin
  314.             print('invalid client data')
  315.             RAISERROR('invalid client data',14,1)
  316.         end
  317.         print('lansare valida')
  318.         insert into Lansare values(@idArtist,@idMelodie,@data)
  319.         print('insert lansare')
  320.  
  321.         commit tran
  322.         print('ok')
  323.         select 'Transaction commited'
  324.  
  325.     end try
  326.     begin catch
  327.         rollback tran
  328.         select 'Transaction rolled back'
  329.     end catch
  330. end
  331.  
  332. select * from Artisti
  333. select * from Melodii
  334. select * from Lansare
  335. exec AddLansare 'George','04/04/2019','Ambigu'
  336.  
  337. select * from Artisti
  338. select * from Melodii
  339. select * from Lansare
  340. exec AddLansare 'George','--','Ambigu'
  341. select * from Artisti
  342. select * from Melodii
  343. select * from Lansare
  344. ------------------2---------------
  345. alter procedure AddLansare2
  346. @Nume varchar(100),
  347. @data varchar(100),
  348. @titluPiesa varchar(100)
  349. as
  350. begin
  351.     declare @ok int
  352.     set @ok=1
  353.     declare @idArtist int
  354.     declare @idMelodie int
  355.  
  356.     begin tran
  357.     begin try
  358.         if(dbo.validare_nume(@nume)<>1)
  359.         begin
  360.             print('invalid artist name')
  361.             RAISERROR('invalid client data',14,1)
  362.         end
  363.  
  364.         insert into Artisti values(@Nume,3)
  365.         commit tran
  366.         set @idArtist=SCOPE_IDENTITY()
  367.         print('insert artist')
  368.         end try
  369.         begin catch
  370.             set @ok=0
  371.             rollback tran
  372.             select 'Transaction rolled back at client'
  373.         end catch
  374.  
  375.         begin tran
  376.         begin try
  377.         if(dbo.validare_nume(@titluPiesa)<>1)
  378.         begin
  379.         print('invalid song title')
  380.             RAISERROR('invalid item data',14,1)
  381.         end
  382.  
  383.        
  384.         insert into Melodii values(@titluPiesa,3)
  385.         set @idMelodie=SCOPE_IDENTITY()
  386.         commit tran
  387.         print('insert song')
  388.  
  389.         end try
  390.         begin catch
  391.             set @ok =0
  392.             rollback tran
  393.             select 'Transaction rolled back at song'
  394.         end catch
  395.  
  396.         begin tran
  397.         begin try
  398.         if(dbo.validare_DataCalendaristica(@data)<>1)
  399.         begin
  400.             print('invalid launch data')
  401.             RAISERROR('invalid launch data',14,1)
  402.         end
  403.         print('lansare valida')
  404.         insert into Lansare values(@idArtist,@idMelodie,@data)
  405.         print('insert lansare')
  406.  
  407.         if @ok <> 1
  408.         begin
  409.             return
  410.         end
  411.  
  412.         commit tran
  413.         print('ok')
  414.         select 'Transaction commited'
  415.         end try
  416.         begin catch
  417.             rollback tran
  418.             select 'Transaction rolled back at lansare'
  419.         end catch
  420. end
  421.  
  422. select * from Artisti
  423. select * from Melodii
  424. select * from Lansare
  425. exec AddLansare2 'Alin','04/04/2019','Piesa1'
  426.  
  427. select * from Artisti
  428. select * from Melodii
  429. select * from Lansare
  430. exec AddLansare2 'Alin','--','Piesa1'
  431. select * from Artisti
  432. select * from Melodii
  433. select * from Lansare
  434.  
  435. delete from Artisti where ArtistID=21
  436. delete from Melodii where MelodieID=19
  437. delete from Lansare where ArtistID=21
  438.  
  439. -----------------3------------
  440. ---Dirty Reads
  441. BEGIN TRANSACTION
  442. UPDATE Impresar set Nume='Alexandru'
  443. WHERE ImpresarID=5
  444. WAITFOR DELAY '00:00:10'
  445. ROLLBACK TRANSACTION
  446.  
  447. ---Dirty Reads
  448. SET TRANSACTION ISOLATION LEVEL READ
  449. UNCOMMITTED
  450. BEGIN TRAN
  451. SELECT * FROM Impresar
  452. WAITFOR DELAY '00:00:15'
  453. SELECT * FROM Impresar
  454. COMMIT TRAN
  455.  
  456. --sol:set transaction isolation level to read committed
  457.  
  458. SET TRANSACTION ISOLATION LEVEL READ COMMITTED
  459. BEGIN TRAN
  460. SELECT * FROM Impresar
  461. WAITFOR DELAY '00:00:15'
  462. SELECT * FROM Impresar
  463. COMMIT TRAN
  464.  
  465. --Non repeatable
  466. INSERT INTO Impresar values('Eusebiu')
  467. BEGIN TRAN
  468. WAITFOR DELAY '00:00:05'
  469. UPDATE Impresar SET Nume='aaaa' where
  470. Nume = 'Eusebiu'
  471. COMMIT TRAN
  472.  
  473. -- Non repeatable 2
  474. SET TRANSACTION ISOLATION LEVEL READ
  475. COMMITTED
  476. BEGIN TRAN
  477. SELECT * FROM Impresar
  478. WAITFOR DELAY '00:00:05'
  479. SELECT * FROM Impresar
  480. COMMIT TRAN
  481.  
  482. ---non repeatable sol
  483. SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
  484. BEGIN TRAN
  485. SELECT * FROM Impresar
  486. WAITFOR DELAY '00:00:05'
  487. SELECT * FROM Impresar
  488. COMMIT TRAN
  489.  
  490. --Phantom Reads
  491. BEGIN TRAN
  492. WAITFOR DELAY '00:00:04'
  493. INSERT INTO Impresar VALUES('Bogdan')
  494. COMMIT TRAN
  495.  
  496. --Phantom Reads
  497. SET TRANSACTION ISOLATION LEVEL REPEATABLE
  498. READ
  499. BEGIN TRAN
  500. SELECT * FROM Impresar
  501. WAITFOR DELAY '00:00:05'
  502. SELECT * FROM Impresar
  503. COMMIT TRAN
  504.  
  505. -- Phantom reads SOLUTION
  506. SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
  507. BEGIN TRAN
  508. SELECT * FROM Impresar
  509. WAITFOR DELAY '00:00:05'
  510. SELECT * FROM Impresar
  511. COMMIT TRAN
  512.  
  513. ---DEADLOCK
  514.  
  515. --transaction 1
  516. begin tran
  517. update Locatie set Tara='Dead'
  518. waitfor delay '00:00:10'
  519. update Concerte set DataConcert='04/04/2012'
  520. commit tran
  521.  
  522. --transaction 2
  523. begin tran
  524. update Concerte set DataConcert='04/04/2012'
  525. waitfor delay '00:00:10'
  526. update Locatie set Tara='Dead'
  527. commit tran
  528.  
  529. --DEADLOCK SOLUTION
  530. SET DEADLOCK_PRIORITY HIGH
  531. begin tran
  532. update Locatie set Tara='Dead'
  533. waitfor delay '00:00:10'
  534. update Concerte set DataConcert='04/04/2012'
  535. commit tran
  536.  
  537.  
  538.  
  539. create procedure Dead1 as
  540. begin
  541.     begin tran
  542.     update Concerte set DataConcert='04/04/2012'
  543.     waitfor delay '00:00:10'
  544.     update Locatie set Tara='Dead'
  545.     commit tran
  546. end
  547.  
  548. create procedure Dead2 as
  549. begin
  550.     SET DEADLOCK_PRIORITY HIGH
  551.     begin tran
  552.     update Locatie set Tara='Dead'
  553.     waitfor delay '00:00:10'
  554.     update Concerte set DataConcert='04/04/2012'
  555.     commit tran
  556. end
  557.  
  558. exec Dead1
  559. exec Dead2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement