pl sql transactions commit
Сазнајте више о ПЛ СКЛ трансакцијама са примерима ЦОММИТ, РОЛЛБАЦК и САВЕПОИНТС израза:
У овом чланку ћемо наставити са ПЛ / СКЛ серија . У ПЛ СКЛ пакет из водича, научили смо о пакету, његовим предностима, спецификацијама и структури.
Овде ћемо истражити ПЛ СКЛ трансакције и њихове карактеристике. Размотрићемо неке ПЛ / СКЛ изјаве попут ЦОММИТ, РОЛЛБАЦК, САВЕПОИНТС и тако даље које су повезане са ПЛ СКЛ трансакцијама.
Такође ћемо сазнати о изразима ЛОЦК ТАБЛе и АУТОЦОММИТ у ПЛ СКЛ.
Почнимо са дискусијом !!
Шта ћете научити:
ПЛ СКЛ трансакције
Атомска компонента рада у бази података која има више СКЛ израза назива се трансакција. Означава се као атомска, јер једном када постоје промене на које утичу СКЛ изрази, они могу бити урезани (неодређена ажурирања базе података) или враћени уназад (поништити ажурирања базе података).
СКЛ израз мора бити урезан, у супротном се може вратити, а све модификације које је СКЛ израз требало да уради остаће поништене. Ако се ПЛ / СКЛ програм заустави усред трансакције, нема утицаја на базу података и она се враћа у првобитно стање.
ЦОММИТ и РОЛЛБАЦК воде рачуна о томе да су промене у бази података вечите или поништене. Изјава САВЕПОИНТ указује на тренутну позицију у обради трансакција.
Започните обраду трансакција
Свака трансакција има почетак и раскид.
Следећи инциденти означавају почетак трансакције:
- Након повезивања са базом података извршава се први СКЛ израз.
- Нова СКЛ наредба извршава се након довршавања претходне СКЛ наредбе.
Крај обраде трансакције
Сваки ПЛ / СКЛ програм треба да има наредбу ЦОММИТ или РОЛЛБАЦК. Само од програмске логике зависи да ли треба да користимо ЦОММИТ или РОЛЛБАЦК након трансакције.
Ако се изрази ЦОММИТ или РОЛЛБАЦК не користе, то зависи од окружења хоста како треба бити коначно стање базе података. На пример, у окружењу СКЛ * ПЛУС, ако је ПЛ / СКЛ блок кода без наредбе ЦОММИТ или РОЛЛБАЦК, стање базе података зависиће од блока кода који се извршава одмах након тога.
У Орацле окружењу, ако укључимо наредбу ЦОММИТ или извршимо наредбу ДИСЦОННЕЦТ, ЕКСИТ или КУИТ након покретања дефиниције података или упита за контролу података, трансакција је извршена. Такође, ако укључимо РОЛЛБАЦК изјаву, трансакција је опозвана.
Стога се трансакција може завршити због било ког од доле наведених сценарија:
- Извршава се наредба РОЛЛБАЦК или ЦОММИТ.
- ДДЛ упит ( на пример, извршава се израда табеле), након чега се ЦОММИТ подразумевано покреће.
- ДЦЛ упит ( на пример, извршава се ГРАНТ израз), након чега се ЦОММИТ подразумевано покреће.
- Корисник прекида везу са базом података.
- Корисник покреће израз ЕКСИТ да би изашао из СКЛ * ПЛУС, након чега се ЦОММИТ извршава по дефаулту.
- СКЛ * ПЛУС наилази на необичан завршетак, након чега се РОЛЛБАЦК подразумевано извршава.
- ДМЛ упит се не изводи успешно, након чега се РОЛЛБАЦК подразумевано покреће да би се база података вратила у првобитно стање.
ОБАВЕЗИ за трајне промене
Извод ЦОММИТ је способан да прекине садашњу трансакцију и изврши трајну модификацију у складу са трансакцијом. Једном када се изврши ЦОММИТ, можемо доћи до модификованих података.
Како се извршава наредба ЦОММИТ, сви погођени редови табеле се ослобађају из брава. Такође нам помаже да се решимо САВЕПОИНТ-а. Израз ЦОММИТ може опционо бити праћен исказом ВОРК (ЦОММИТ ВОРК) који се додаје само ради побољшања читљивости кода.
У случају да трансакција закаже у време ЦОММИТ-а и стање трансакције није познато, тада се ЦОММЕНТ текст у ПЛ / СКЛ коду чува у речнику података заједно са ИД-ом трансакције.
Синтакса за трансакцију ЦОММИТ:
COMMIT;
Размотримо таблицу под називом УЧИТЕЉИ.
Табелу ТЕАЦХЕРС креирали смо уз помоћ СКЛ наредбе дане у наставку:
CREATE TABLE TEACHERS ( CODE INT NOT NULL, SUBJECT VARCHAR (15) NOT NULL, NAME VARCHAR (15) NOT NULL, PRIMARY KEY (CODE) );
У ову табелу уметните вредности, а затим извршите трансакцију на следећи начин:
INSERT INTO TEACHERS VALUES (1, 'SELENIUM', 'TOM'); INSERT INTO TEACHERS VALUES (2, 'UFT', 'SAM'); INSERT INTO TEACHERS VALUES (3, 'JMETERE', 'TONK'); COMMIT;
Затим се извршава упит у наставку:
SELECT * FROM TEACHERS;
Излаз:
ПОВРАТАК Да бисте опозвали промене
Ако се тренутна трансакција заврши изјавом РОЛЛБАЦК, тада ће поништити све модификације које би требале да се догоде у трансакцији.
Изјава РОЛЛБАЦК има следеће карактеристике као што је наведено у наставку:
- База података се враћа у првобитно стање помоћу наредбе РОЛЛБАЦК у случају да смо грешком избрисали важан ред из табеле.
- У случају изузетка који је довео до неуспеха извршења СКЛ израза, израз РОЛЛБАЦК омогућава нам скок на почетну тачку програма одакле можемо предузети мере за поправљање.
- Ажурирања у бази података без наредбе ЦОММИТ могу се опозвати наредбом РОЛЛБАЦК.
Синтакса за РОЛЛБАЦК трансакције:
ROLLBACK;
Синтакса трансакције РОЛЛБАЦК са САВЕПОИНТ:
ROLLBACK (TO SAVEPOINT );
Ево, саве_н је назив САВЕПОИНТ-а.
Размотримо табелу УЧИТЕЉИ коју смо раније креирали.
Имплементација кода са РОЛЛБАЦК-ом:
DELETE FROM TEACHERS WHERE CODE= 3; ROLLBACK;
Затим се извршава упит у наставку:
SELECT * FROM TEACHERS;
Излаз горњег кода треба да буде:
У горе наведеном коду извршили смо наредбу ДЕЛЕТЕ којом би требало да се избрише запис наставника са ЦОДЕ једнаким 3. Међутим, због наредбе РОЛЛБАЦК нема утицаја на базу података и брисање није извршено.
САВЕПОИНТ за враћање делимичних промена
САВЕПОИНТ даје име и идентификацију тренутној тачки обраде трансакције. Генерално је повезан са наредбом РОЛЛБАЦК. Омогућава нам да вратимо неке делове трансакције не додирујући целу трансакцију.
Док примењујемо РОЛЛБАЦК на САВЕПОИНТ, уклањају се сви САВЕПОИНТС који су укључени након тог одређеног САВЕПОИНТ-а (то јест ако смо означили три САВЕПОИНТС-а и применили РОЛЛБАЦК на другом САВЕПОИНТ-у, аутоматски ће се избрисати трећи САВЕПОИНТ.)
Израз ЦОММИТ или РОЛЛБАЦК брише све САВЕПОИНТС. Имена дана САВЕПОИНТ-у су непријављени идентификатори и могу се поново применити неколико пута унутар трансакције. Постоји померање САВЕПОИНТ-а са старог на садашњи положај унутар трансакције.
РОЛЛБАЦК примењен на САВЕПОИНТ утиче само на текући део трансакције. Стога САВЕПОИНТ помаже да се дугачка трансакција подели на мале делове позиционирањем тачака провере.
Синтакса за трансакцију САВЕПОИНТ:
SAVEPOINT ;
Ево, саве_н је назив САВЕПОИНТ-а.
Размотримо поново табелу УЧИТЕЉИ коју смо раније креирали.
Имплементација кода РОЛЛБАЦК-а СА САВЕПОИНТ-ом:
INSERT INTO TEACHERS VALUES (4, 'CYPRESS', 'MICHEAL'); SAVEPOINT s; INSERT INTO TEACHERS VALUES (5, 'PYTHON', 'STEVE'); INSERT INTO TEACHERS VALUES (6, 'PYTEST', 'ARNOLD'); ROLLBACK TO s; INSERT INTO TEACHERS VALUES (7, 'PROTRACTOR', 'FANNY'); COMMIT;
Затим се извршава упит у наставку:
SELECT * FROM TEACHERS;
Излаз горњег кода треба да буде:
У горњем коду, после РОЛЛБАЦК-а са САВЕПОИНТ-ом с примењује се, убачена су само још два реда, тј. наставници са КОДОМ 4 и 7, респективно. Имајте на уму да су наставници са кодовима 1, 2 и 3 додани током креирања табеле.
Табела ЛОЦК у ПЛ / СКЛ
Изјава ЛОЦК у ПЛ / СКЛ омогућава закључавање комплетне базе података у режиму закључавања. Ово одређује да ли желимо да делимо или забранимо приступ табели.
Узмимо пример табеле закључавања:
LOCK TABLE teachers IN ROW SHARE MODE NOWAIT;
Горњи упит закључава табелу НАСТАВНИЦИ у режиму дељења редова. Режим дељења редова даје дозволу за истовремену употребу табеле. Не дозвољава корисницима да закључају целу табелу за индивидуалну употребу. Након извршења ЦОММИТ-а или РОЛЛБАЦК-а, браве табеле се ослобађају. Кључна реч НОВАИТ користи се за помињање да база података не сме да чека ослобађање браве.
Режим закључавања је важан да би се закључило које се друге браве могу применити на сто.
Размотримо неке начине закључавања доступне у ПЛ / СКЛ:
Сл. Не | РЕЖИМ ЗАКЉУЧАВАЊА | СВРХА |
---|---|---|
1 | РЕД АКЦИЈА | Омогућава истовремено коришћење више табела више корисника. Међутим, корисницима није дозвољено да закључају целу табелу за искључиву употребу. |
два | РЕД ЕКСКЛУЗИВНО | Омогућава истовремено коришћење више табела више корисника. Међутим, корисницима није дозвољено да закључају комплетну табелу ради ексклузивне употребе у режиму дељења. |
3 | ПОДИЈЕЛИТЕ АЖУРИРАЊЕ | Омогућава истовремено коришћење више табела више корисника. Међутим, корисницима није дозвољено да закључају целу табелу за искључиву употребу. |
4 | ОБЈАВИ | Омогућава нам истовремено извршавање више упита на табели. Међутим, корисницима није дозвољено да мењају закључану табелу. |
5 | ПОДЕЛИТЕ РЕД ЕКСКЛУЗИВНО | Омогућава корисницима приступ табели само за читање. Није им дозвољено да мењају табелу или да закључавају табелу у режиму дељења. |
6 | ЕКСКЛУЗИВНО | Омогућава само извршавање упита на закључаној табели. |
Аутоматска контрола трансакција у ПЛ / СКЛ
Можемо извршити конфигурацију тако да се наредба ЦОММИТ по дефаулту извршава кад год се изврши ИНСЕРТ или ДЕЛЕТЕ израз. То се постиже постављањем променљиве окружења АУТОЦОММИТ на ОН.
Синтакса:
SET AUTOCOMMIT ON;
Опет, ово се може искључити постављањем променљиве окружења АУТОЦОММИТ на ОФФ.
Синтакса:
SET AUTOCOMMIT OFF;
Често постављана питања и одговори
П # 1) Која је трансакција у ПЛ СКЛ-у?
Одговор: Трансакција је група СКЛ израза за израчунавање података који раде као атомска јединица. Све трансакције су атомске природе, које су или извршене или подржане.
П # 2) Шта је ЦОММИТ у ПЛ СКЛ-у?
Одговор: Израз ЦОММИТ користи се за трајну промену базе података тренутном трансакцијом. Омогућава корисницима модификацију базе података.
П # 3) Како завршавате трансакцију?
Одговор: Трансакција се експлицитно завршава наредбом ЦОММИТ или РОЛЛБАЦК. Такође се може безусловно завршити након покретања ДМЛ израза.
П # 4) Можемо ли извршити окидач?
Одговор: Да, можемо активирати покретач само ако је та трансакција покретача самостална од матичне трансакције.
зашто је линук бољи од прозора
П # 5) Да ли је СЕЛЕЦТ трансакција?
Одговор: Да, СЕЛЕЦТ је трансакција која има све карактеристике трансакције.
П # 6) Како могу да вратим трансакцију у Орацле?
Одговор: Морамо покренути наредбу РОЛЛБАЦК да бисмо вратили трансакцију у Орацле. Поништиће све промене извршене трансакцијом у бази података и вратиће се у првобитно стање.
Закључак
У овом упутству детаљно смо разговарали о неким основним концептима ПЛ СКЛ трансакција који су од суштинског значаја за управљање ПЛ СКЛ трансакцијама. Обрадили смо следеће теме наведене у наставку:
- Трансакција.
- Коришћење ЦОММИТ-а у трансакцији.
- Шта је ПОВРАТАК у трансакцији?
- Коришћење РОЛЛБАЦК-а са САВЕПОИНТ-ом у трансакцији.
- ЛОЦК сто.
Препоручено читање
- ПЛ СКЛ лекције за почетнике са примерима | Шта је ПЛ / СКЛ
- Развој апликације Орацле базе података: Орацле СКЛ и ПЛ / СКЛ
- ПЛ СКЛ пакет: Водич за Орацле ПЛ / СКЛ пакет са примерима
- Разлика између СКЛ Вс МиСКЛ Вс СКЛ Сервер (са примерима)
- ПЛ СКЛ формат времена и датума: функције датума и времена у ПЛ / СКЛ-у
- Комплетан водич за руковање изузецима ПЛ СКЛ-а са примерима
- СКЛ вс НоСКЛ Тачне разлике и знајте када треба користити НоСКЛ и СКЛ
- Водич за Орацле базе података - шта је Орацле база података?