Тапсырмалар:
Транзакцияларды басқару.
Транзакция түрлері.
Тосқауылды басқару
Транзакцияларды басқаруда қолданылатын үш команда бар:
COMMIT - өзгерістерді сақтау үшін;
ROLLBACK - өзгерістерді қабылдамау;
SAVEPOINT - қайтарымның ерекше нүктелерін құру.
Сақтау нүктесін қолдану:
BEGIN TRAN
SAVE TRANSACTION point1
point1 нүктесінде ЗАПЧАСТИ кестесінің алғашқы күйі сақталады.
DELETE FROM ПОКУПАТЕЛИ
WHERE номер_покупателя=8101
SAVE TRANSACTION point2
point2 нүктесінде номер_покупателя=8101 сатып алушысыз ПОКУПАТЕЛИ кестесінің күйі сақталады.
DELETE FROM ПОКУПАТЕЛИ
WHERE номер_покупателя=8102
SAVE TRANSACTION point3
point3 нүктесінде номер_покупателя 8101, 8102 номерімен сатып алушысыз ПОКУПАТЕЛИ кестесінің күйі сақталады.
DELETE FROM ПОКУПАТЕЛИ
WHERE номер_покупателя<>8103
ROLLBACK TRANSACTION point3
8101 және 8102 сатып алушысыз кесте күйіне келу қайтарылады, ақырғы жою жасалмайды.
ROLLBACK TRANSACTION point1
Кестенің алғашқы жағдайы қайтарылады.
SELECT * FROM ПОКУПАТЕЛИ
COMMIT
Алғашқы күйі сақталады.
Ішке салынған транзакциялар:
BEGIN TRAN
INSERT ЗАПЧАСТИ (название, нал_количество)
VALUES ('v',40)
BEGIN TRAN
INSERT ЗАПЧАСТИ (название, нал_количество)
VALUES ('n',50)
BEGIN TRAN
INSERT ЗАПЧАСТИ (название, нал_количество)
VALUES ('m',60)
ROLLBACK TRAN
Мұнда кестенің бастапқы қалпына келу жүзеге асырылады, себебі ROLLBACK TRAN командасының орындалуы транзакция аты көрсетілмей барлық транзакцияны шегіндіріледі.
SQL Server ANSI стандартымен анықталған жекешеленудің барлық төрт деңгейін қолдайды. Изоляциялану деңгейі келесі командамен орнатылады:
SET TRANSACTION ISOLATION LEVEL
{ READ COMMITTED | READ UNCOMMITTED
| REPEATABLE READ | SERIAIZABLE}
Әр уақыт сәтіне изоляцияланудың бір деңгейі мүмкін.
Транзакция қалай жұмыс істейді?
BEGIN TRAN u2
SAVE TRANSACTION p1
INSERT МАГАЗИНЫ VALUES(71, 'Астана', 'Центр',
305, 50000, 12000 )
INSERT МАГАЗИНЫ VALUES(72, 'Астана', 'Центр',
305, 60000, 13000 )
INSERT МАГАЗИНЫ VALUES(73, 'Абай', 'Центр',
308, 40000, 14000 )
INSERT МАГАЗИНЫ VALUES(74, 'Костанай', 'Север',
305, 50000, 15000 )
INSERT МАГАЗИНЫ VALUES(75, 'Абай', 'Центр',
308, 60000, 16000 )
SAVE TRANSACTION p2
DELETE FROM МАГАЗИНЫ WHERE номер_магазина=72
SAVE TRANSACTION p3
DELETE FROM МАГАЗИНЫ WHERE номер_магазина=75
SAVE TRANSACTION p4
DELETE FROM МАГАЗИНЫ WHERE номер_магазина<>71
ROLLBACK TRANSACTION p3
INSERT МАГАЗИНЫ VALUES(76,'Кокшетау', 'Север',
305, 50000, 15000)
COMMIT
Нәтиже:
Достарыңызбен бөлісу: |