Transaction Basics
In this page:
START TRANSACTION;
-- SQL statements
COMMIT;
एक Transaction क्या है?
एक transaction कई SQL statements को एक all-or-nothing unit में group करता है: या तो इसके अंदर हर statement succeed करके साथ save होता है, या पूरा group roll back हो जाता है ऐसे जैसे इसमें से कुछ कभी चला ही न हो।
उदाहरण: What is a Transaction?
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
एक Transaction शुरू करना
START TRANSACTION उस group की शुरुआत mark करता है, जो हर statement को तुरंत save करने के MySQL के usual behavior को suspend करता है ताकि आप control कर सकें कि पूरा batch exactly कब permanent बने।
उदाहरण: Starting a Transaction
CREATE TABLE accounts (id INT, balance INT);
INSERT INTO accounts VALUES (1, 500), (2, 200);
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
Changes Commit करना
COMMIT transaction शुरू होने के बाद किए गए हर change को एक साथ permanent बना देता है। एक बार committed हो जाने पर, वे changes durable होते हैं और rollback से अब undo नहीं किए जा सकते।
उदाहरण: Committing Changes
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
Changes Rollback करना
ROLLBACK transaction शुरू होने के बाद किया गया हर change discard कर देता है, database को exactly उस state में restore करते हुए जिसमें यह transaction शुरू होने से पहले था — जब बीच में कुछ गलत हो जाए तब उपयोगी।
उदाहरण: Rolling Back Changes
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Something went wrong -- undo it
ROLLBACK;
Autocommit Mode
Default रूप से MySQL autocommit mode में चलता है, execute होते ही हर individual statement save करते हुए। statements को एक explicit transaction में wrap करना उसे temporarily disable कर देता है ताकि कई changes साथ commit किए जा सकें।
उदाहरण: Autocommit Mode
SELECT @@autocommit;
SET autocommit = 0;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
COMMIT;
COMMITभूल जाना, ताकि दूसरे sessions changes कभी न देखें, और connection बंद करना उन्हें roll back कर दे।MyISAMजैसा एक non-transactional table type इस्तेमाल करना, ताकिROLLBACKकुछ undo न करे (InnoDBइस्तेमाल करें)।- बीच में
CREATE TABLEजैसा एक DDL statement चलाना, जो एक implicit commit force करता है।
Chapter Quiz — Complete all 4 topics to unlock
0/4 topics done
Complete these topics first: