• Գլխավոր
  • Լուրեր
    • Առողջապահություն
    • Անվտանգություն
    • Արհեստական Ինտելեկտ
    • Էկոլոգիա
    • Մեքենաշինություն
    • Ռոբոտաշինություն
    • Համացանց
    • Համակարգիչ
    • Սմարթֆոն
    • Սոցցանց
    • Google
    • Microsoft
    • Hi-Tech
  • Վեբ
    • PHP
    • HTML
      • HTML5
    • CSS
      • CSS3
    • JavaScript
      • jQuery
    • WordPress
  • SQL
  • Թեստեր
    • PHP
    • MySQL
    • HTML
    • JavaScript
    • CSS
  • Ֆորում
  • Հետադարձ կապ
IT-Blog.am
Տեղեկատվական տեխնոլոգիաների պորտալ
  • Գլխավոր
  • Լուրեր
    • Առողջապահություն
    • Անվտանգություն
    • Արհեստական Ինտելեկտ
    • Էկոլոգիա
    • Մեքենաշինություն
    • Ռոբոտաշինություն
    • Համացանց
    • Համակարգիչ
    • Սմարթֆոն
    • Սոցցանց
    • Google
    • Microsoft
    • Hi-Tech
  • Վեբ
    • PHP
    • HTML
      • HTML5
    • CSS
      • CSS3
    • JavaScript
      • jQuery
    • WordPress
  • SQL
  • Թեստեր
    • PHP
    • MySQL
    • HTML
    • JavaScript
    • CSS
  • Ֆորում
  • Հետադարձ կապ
Գլխավոր  /  MySQL • SQL • Web  /  MySQL գործարքի(transaction) կառավարման օպերատորներ
mysql transaction
19 Նոյեմբերի 2016

MySQL գործարքի(transaction) կառավարման օպերատորներ

Հեղինակ Եվգինե
MySQL, SQL, Web

Բարև Ձեզ սիրելի ընթերցողներ, այսօր ուզում եմ խոսել  մի թեմայից, որին  մենք հաճախ առնչվում ենք առօրյաում: Խոսքս վերաբերում է  բանկերում գործարքների կատարման գործընթացին:  Եթե բանկային որևէ գործարքի ընթացքում առաջանում են խնդիրներ և այն չի իրականանում, ապա մինչ այդ կատարված գործողությունները հաջորդաբար գալիս են սկզբնական վիճակին: Ենթադրենք դուք բանկում կատարում եք գումարի փոխանցում: Գումարը ձեր հաշվեհամարից ելել է և մինչև մյուս հաշվեհամարի վրա «նստելը» հանկարծ առաջանում է խնդիր ու գործարքը ընդհատվում է: Դուք նկատած կլինեք, որ խնդիրներ չեք ունենում և գումարը  նորից վերադարնում է ձեր հաշվեհամար: Դա կատարվում է ի շնորհիվ ROLLBACK օպերատորի: Այն մինչ ընդհատումը կատարված բոլոր գործողությունները հաջորդաբար վերադարձնում է իրենց սկզբկական վիճակին և դրա շնորհիվ է, որ գումարը չի կորում ու վերադառնում է ձեր հաշվեհամարի վրա:

Վերոհիշյալ գործընթացները տվյալների բազաների մակարդակում  ապահովում են TRANSACTION-ները և ROLLBACK-ները: Ծանոթանանք դրանց հետ ավելի մանրամասն:

MySQL-ը լռելյայն աշխատում է գործարքի(transaction) ավտոմատ  ավարտման  ռեժիմով (autocommit): Սա նշանակում է, որ երբ կատարվում է տվյալների բազայի թարմացում, որը փոփոխում է աղյուսակը, MySQL-ն անմիջապես  այդ փոփոխությունները պահում է սկավառակի վրա: Եթե դուք աշխատում եք գործարքների նկատմամբ անվտանգ  աղյուսակների (DB և BDB)  հետ, ապա կարող եք անջատել գործարքի ավտոմատ ավարտման ռեժիմն այսպես՝

SET AUTOCOMMIT=0;

Գործարքի ավտոմատ ավարտման ռեժիմն անջատելուց հետո, դուք կարող եք օգտագործել COMMIT օպերատորը՝ փոփոխությունները սկավառակի վրա պահելու համար, կամ ROLLBACK, որպեսզի չեղարկեք գործարքի սկզբից կատարված փոփոխությունները:

START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summmary=@A WHERE type=1;
COMMIT;

 

ROLLBACK-ի օգտագործման նպատակներն են.

  • չեղարկել բոլոր գործարքի սկզբից կատարված փոփոխությունները կամ որևէ պահպանման կետը (SAVEPOINT),
  • մաքրել տվյալ  գործարքի բոլոր պահպանման կետերը,
  • ավարտել գործարքը,
  • ազատել տվյալ  գործարքի բոլոր արգելափակումները:

Որոշ հրամանների հետ չի թույլատրվում օգտագործել ROLLBACK: Դրանց թվին են պատկանում տվյալների սահմանման լեզուն (Data Definition Language – DDL), որը ստեղծում, փոփոխում և ջնջում է տվյալների բազաներ ու աղյուսակներ: Պետք է գործարքները նախագծել այնպես, որ այդ հրամանները դրանց մեջ չլինեն և, եթե գործարքի սկզբում  օգտագործել եք DDL հրամաններից որևէ մեկը, գործարքի լրիվ ազդեցությունը չի կարող չեղարկվել ROLLBACK օպերատորով:

MySQL 4.0.14 և 4.1.1 տարբերակներում innoDB աղյուսակները  աջակցում են SAVEPOINT  և  ROLLBACK TO SAVEPOINT օպերատորները.

SAVEPOINT my_save_point;

ROLLBACK TO SAVEPOINT my_save_point;

SAVEPOINT օպերատորով  ստեղծում ենք «my_save_point»  անունով պահպանման կետ: ROLLBACK TO SAVEPOINT օպերատորը  գործարքն ուղղորդում է  դեպի տրված անունով պահպանման կետ: Եթե  տվյալ գործարքն արդեն ունի նման անունով պահպանման կետ, ապա նախորդը ջնջվում է և պահպանվում է նորը: Գործարքի բոլոր պահպանման կետերը ջնջվում են, եթե ROLLBACK կամ COMMIT օպերատորներն օգտագործվում են առանց պահպանման կետի անունի: Եթե օպերատորը վերադարձնում է «ERROR 1181: Got error 153 during ROLLBACK» սխալը, ապա նշանակում է, որ տվյալ անունով  պահպանման կետ գոյություն չունի: ROLLBACK-ի աշխատանքը դիտարկենք օրինակով:

UPDATE products SET price=50 WHERE product_id = 110;
SAVEPOINT save_point;
UPDATE product_quantity SET pr_price=50 WHERE pr_id = 110;
ROLLBACK TO SAVEPOINT save_point;
COMMIT;

Այս օրինակում  «products» աղյուսակում կատարվում է թարմացում, որից հետո ստեղծվել է պահպանման կետ «save_point» անունով: Կատարվում է նաև «product_quantity» աղյուսակի թարմացում: ROLLBACK կկատարվի դեպի  «save_point» պահպանման կետ, եթե օպերատորի կատարումը  ինչ-որ պատճառով ձախողվի կամ, եթե օգտագործողը չեղյալ համարի այն  CTRL + C  հրամանով: ROLLBACK-ի ժամանակ SAVEPOINT -ից հետո կատարված գործողությունները հաջորդաբար կչեղարկվեն, իսկ դրանից վերև կատարվածները՝ կմնան անփոփոխ: Այսինքն՝  «product_quantity» աղյուսակում կատարված թարմացումը կչեղարկվի, իսկ «products» աղյուսակի փոփոխությունը կմնա անփոփոխ:

Որևէ հարցի դեպքում կարող եք դիմել մեզ մեկնաբանությունների կամ քննարկումների բաժիններում։

Կապված գրառումներ

  • Class

    Կլասների (classes) գրելաձևը (syntax)

    10/20/2016
  • MySQL Trigger

    MySQL տրիգերներ (Triggers) և իրադարձություններ(Events)

    10/04/2016
  • Procedures and Functions

    MySQL ընթացակարգեր (procedures) և ֆունկցիաներ (functions)

    08/31/2016
Facebook
  • Շատ Դիտված Գրառումներ
  • Նոր գրառումներ
  • Calculator
    Հաշվիչի (calculator) պատրաստում 04/18/2016
  • Sendmail կարգավորումներ 04/01/2016
  • Recursion
    Ռեկուրսիա (recursion) հասկացությունը 06/02/2016
  • Icon տառատեսակներ 02/21/2016
  • MySQL joins
    MySQL JOINS (MySQL միացումներ) 06/13/2016
  • Ի՞նչ է Pi Network-ը և ինչպե՞ս վաստակել Pi 03/27/2020
  • Honda-ն ներկայացրել է մոտոցիկլետ, որն օգտագործում է քամու էներգիա 12/23/2017
  • Նոր 3D-տպիչ սարքը ստեղծում է առարկաներ վայրկյանների ընթացքում 12/22/2017
  • Հետազոտողներն օգտագործում են էլեկտրական հոսանքներ`մարդու հյուսվածքներում քաղցկեղի հայտնաբերման համար 12/18/2017
  • Nvidia ընկերությունը ներկայացրել է երբևէ ստեղծված ամենահզոր գրաֆիկական պրոցեսորը 12/16/2017
  • WordPress -ի տեղադրումը .Net -ի վրա 03/16/2017
  • Class
    Կլասների (classes) գրելաձևը (syntax) 10/20/2016
  • encapsulation
    Ինկապսուլացիա (Encapsulation) 08/17/2016
  • object oriented programming
    Օբյեկտ կողմնորոշված ծրագրավորում (OOP) 07/04/2016
  • Ի՞նչ է Pi Network-ը և ինչպե՞ս վաստակել Pi 03/27/2020
  • Honda-ն ներկայացրել է մոտոցիկլետ, որն օգտագործում է քամու էներգիա 12/23/2017
  • Նոր 3D-տպիչ սարքը ստեղծում է առարկաներ վայրկյանների ընթացքում 12/22/2017
  • mysql transaction
    MySQL գործարքի(transaction) կառավարման օպերատորներ 11/19/2016
  • MySQL Trigger
    MySQL տրիգերներ (Triggers) և իրադարձություններ(Events) 10/04/2016
  • Procedures and Functions
    MySQL ընթացակարգեր (procedures) և ֆունկցիաներ (functions) 08/31/2016
  • MYSQL View
    MySQL ներկայացումներ (VIEWS) 07/16/2016
  • WordPress -ի տեղադրումը .Net -ի վրա 03/16/2017
  • SEO խրվակներ WordPress-ի համար 04/25/2016
  • Ծանոթացում WordPress-ի կառավարակետի հետ (մաս 2) 02/24/2016
  • Ի՞նչ է CMS-ը 02/17/2016
© 2020 թ.  IT-Blog.am Բոլոր հեղինակային իրավունքները պաշտպանված են:

Սույն կայքում տեղադրված նյութերի հեղինակային իրավունքը պատկանում է բացառապես IT-Blog.am կայքի հեղինակներին և կայքում բոլոր հրապարակված նյութերն անհատական օգտագործման համար են։ Այս կայքում  հրապարակված նյութերի (մասնակի կամ ամբողջական) վերահրապարկումը տեղեկատվություն տարածող այլ միջոցներում (բացառությամբ սոցկայքերի) արգելված է։ Խախտում թույլ տված անձինք կենթարկվեն պատասխանատվության` օրենքով սահմանված կարգով։