CREATE TABLE
( [()],
[()],
...
FOREGIGN KEY (,..) REFERENCES [(, ...)]
ON UPDATE [CASCADE|RESTRICT|SET NULL]
ON DELETE [CASCADE|RESTRICT|SET NULL],
... );
Misol. Siz sotuvchi nomerini o‘zgartirmoqchisiz, lekin uning xamma buyurtmachilarini saqlab qolmoqchisiz. Lekin bu sotuvchi firmadan bo‘shab ketsa siz uning buyurtmachilarini boshqa sotuvchiga maxkamlashingiz kerak. Buni bajarish uchun kaskad effektli UPDATE va cheklanishli DELETE berishingiz kerak.
CREATE TABLE Customers
(CNum integer NOT NULL PRIMARY KEY,
CName char(10) NOT NULL,
City char(10),
Rating integer,
SNum integer REFERENCES Salepeople
ON UPDATE CASCADE
ON DELETE RESTRICT);
Agar endi sotuvchilar jadvalidan Peel ni o‘chirmoqchi bo‘lsangiz, to buyurtmachilar jadvalida Hoffman va Clemens ning SNum maydonini boshqa tayinlangan sotuvchiga o‘zgartirishingiz kerak. Boshqa tomondan Peel SNum maydonini 1009 ga o‘zgartirsangiz Hoffman va Clemens xam avtomatik o‘zgaradi.
Tranzaksiyalar (qachon qilingan o‘zgarishlar doimiy bo‘ladi?).
Komanda yoki komandalar guruxi bajarilgandan so‘ng o‘zgartishlar ma’lumotlar bazasida saqlanib qolishi yoki rad etilishini xal qilishingiz lozim. Bu maqsadda komandalar tranzaksiya deb ataluvchi guruxlarga biriktiriladi.
xar doim SQL seans boshlaganingizda Tranzaksiya xam boshlanadi. Xamma komandalar tranzaksiya qismi xisoblanadi, toki ularni COMMIT yoki ROLLBACK komandasi kiritib tugatmaguningizcha. COMMIT o‘zgarishlarni doimiy qiladi ROLLBACK bo‘lsa rad qiladi. YAngi tranzaksiya COMMIT yoki ROLLBACK komandasidan so‘ng boshlanadi.
Ko‘pgina realizatsiyalarda siz AUTOCOMMIT parmetrini o‘rnatishingiz mumkin. Bu xamma qadamlarni avtomatik eslabqoladi. Xatoga olib keluvchi qadamlar teskarisiga bajariladi. Buni quyidagicha bajarish mumkin: SET AUTOCOMMIT ON; Oldingi xolatga quyidagicha qaytish mumkin SET AUTOCOMMIT OFF;
Ba’zi komandalar ya’ni ALTER, CREATE, DROP, GRANT, REVOKE, kabi COMMIT ni avtomatik bajaradi.
Do'stlaringiz bilan baham: |