SQL muhitida tranzaksiyalani boshqarish




Download 1,38 Mb.
Pdf ko'rish
bet65/79
Sana30.01.2024
Hajmi1,38 Mb.
#148346
1   ...   61   62   63   64   65   66   67   68   ...   79
Bog'liq
Mundarija kirish

SQL muhitida tranzaksiyalani boshqarish. 
SQL tilida tranzaksiyalami maxsus 
operatorlat yordamida 
boshqarish imkoniyati mavjud. Shulardan biri tranzaksiya parametrlarini 
o‟matish operatori bo'lib, uniyozilish formati quyidgicha: 
 ::= 
SET TRANSACTION transaction mode> [ { transaction 
mode> }... ] 
transaction mode> ::= 
 
 
| «diagnostics size> 
«isolation level> ::= 
ISOLATION LEVEL «level of isolation> 
 ::= 
READ UNCOMMITTED | READ COMMITTED i REPEATABLE 
READ | SERIALIZAB1 1 
transaction access mode> 


90 
READ ONLY | READ WRITE 
diagnostics size> ::= 
DIAGNOSTICS SIZE  
 ::=  
Bu yerda: 
 Agar himoya darajalari ko'rsatilmasa, himoya darajasi 
SERIALIZABLE deb tushumniladi. 
 Agar ruxsat tartibi READWRITE kalit so'zi bilan belgilansa, unda 
himoyalanish darajasi READUNCOMMITTED bo'lmasligi kerak. 
 Agar 
ruzsat 
tartibi 
va 
himoyalanish 
darajasi 
READUNCOMMITTED deb ko'rsatilsa, unda beriladigan ruxsat 
tartibi READONLY deb tushuniladi, aks hollarda ruxsat tartibi 
READWRITE bo'ladi. 
Ko'pchilik hollarda tranzaksiyalaming bajarilish jarayonida MB 
jadvallari stmkturasi buzilishining oldini olish uchun tranzaksiyalarga 
faqat o'qish tartibini o'rnatish mumkin. Buning uchun quyidagi operator 
ishlatiladi: 
SET TRANSACTION READ ONLY; 
Bu operator tranzaksiya jarayoni boshlanishidan oldin ko'rsatiladi. 
Masalan, EXEC SQL SET TRANSACTION READ ONLY; 
Buyurtmalarni qabul qilgan sotuvchini aniqlamoqchmiz. Bu ikki 
so‟rovni bir- biridan farq qilishi uchun matn kiritish yo'li bilan 
tashkillashtirisimiz mumkin: 
SELECT a.snum, sname, onum, ‟Highest on‟, odate FROM Salespeople 
a. 
Orders b WHERE a.snum = b.snum AND b.amt = (SELECT MAX 
(amt) FROM Orders с WHERE c.odate = b,odate)
UNION 
SELECT a.snum, sname, onum, ‟Lowest on‟, odate FROM Salespeople 
a, Orders b WHERE a.snum b.snum AND b.amt = (SEi FCT MIN 
(amt)FROM Orders с WHERE c.odate ; b.odate); 
10 Peel 30 
High o 10/05/ 
10 Peel 
30 
Low o 10/05/ 
10 Peel 
30 
High o 10/06/ 
10 Serre 30 High o 10/03/ 
10 Serre 30 Low o 10/04/ 
10 Serre 30 Low o 10/06/ 


91 
10 Axel 30 High o 10/04/
Shu paytgacha UNION kalit so‟zi yordamida birlashtirilgan so'rov 
natijalari qanday tartibda matnga chiqarilishi to'g‟risida gapirmadik. 
Birlashtirilgan 
natijalarni ORDER 
BY 
kalit so'zi yordamida 
tartiblashtirish mumkin. Yoqoridagi misolni tartub raqamlariga nisbatan 
tartiblashni ko'rib o'tamiz. 
SELECT a.snum, sname, onum, ‟Highest on‟, odate FROM Salespeople 
a. Orders b WHERE a.snum = b.snum AND b.amt = (SELECT MAX 
(amt) FROM Orders с WHERE c.odate = b.odate) 
UNION 
SELECT a.snum, sname, onum. ‟Lowest on‟, odate F ROM Salespeople 
a. Orders b WHERE a.snum = b.snu AND b.amt = (SELECT MIN (amt) 
FROM Orders с WHERE c.odate = b.odate) ORDER BY 3; Natija 
quyidagicha: 
1007 Rifkin 
3001 
Lowest on 
10/03/199 
1002 Serres 
3005 
Highest on 
10/03/199 
1002 Serres 
3007 
lowest on 
10/04/199 
1001 Peel 
3008 
Highest on 
10/05/199 
1001 Peel 
3008 
Lowest on 
10/05/199 
1003 Axelrod 
3009 
Highest on 
10/04/199 
1002 Serres 
3010 
Lowest on 
10/06/199 
1001 Peel 
3011 
Highest on 
10/06/199 

Download 1,38 Mb.
1   ...   61   62   63   64   65   66   67   68   ...   79




Download 1,38 Mb.
Pdf ko'rish