COMMIT और ROLLBACK
In this page:
START TRANSACTION;
-- SQL statements
COMMIT; -- save the changes
-- or
ROLLBACK; -- undo the changes
Transactions का Introduction
COMMIT और ROLLBACK एक transaction के खत्म होने के दो तरीके हैं: COMMIT START TRANSACTION के बाद किए गए हर change को permanent की तरह lock कर देता है, जबकि ROLLBACK उन सबको ऐसे फेंक देता है जैसे transaction कभी हुआ ही न हो।
उदाहरण: Introduction to Transactions
START TRANSACTION;
UPDATE accounts SET balance = balance - 50 WHERE id = 1;
COMMIT;
ROLLBACK से Changes Undo करना
ROLLBACK आपका safety net है जब transaction के बीच में कुछ गलत हो जाए — एक failed validation, एक unexpected error, या एक business rule violation — आपको अब तक किए गए हर change cancel करके data को exactly वैसे छोड़ने देते हुए जैसा वह था।
उदाहरण: Undoing Changes with ROLLBACK
START TRANSACTION;
UPDATE accounts SET balance = balance - 50 WHERE id = 1;
-- Validation failed -- cancel everything since START TRANSACTION
ROLLBACK;
MySQL में Auto-Commit Mode
Autocommit mode बंद करना आपको इस पर पूरा manual control देता है कि data कब permanent बने, जो दो accounts के बीच पैसे transfer करने जैसे multi-step operations के लिए सबसे ज़्यादा मायने रखता है जिन्हें साथ succeed या fail होना ज़रूरी है।
उदाहरण: Auto-Commit Mode in MySQL
SET autocommit = 0;
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
Transaction Status Check करना
आप यह confirm करने के लिए current autocommit setting check कर सकते हैं कि MySQL आपके statements तुरंत save कर रहा है या एक explicit COMMIT का wait कर रहा है, जो sensitive multi-step logic चलाने से पहले verify करना उचित है।
उदाहरण: Checking Transaction Status
SELECT @@autocommit AS autocommit_enabled;
Transactions के लिए Best Practices
Transactions को छोटा रखना एक real performance concern है — एक long-running transaction rows या tables पर locks को एक लंबे समय तक hold कर सकता है, दूसरे users को block करते हुए, इसलिए इसे हमेशा COMMIT या ROLLBACK से जल्दी बंद करें।
उदाहरण: Best Practices for Transactions
START TRANSACTION;
UPDATE accounts SET balance = balance - 50 WHERE id = 1;
UPDATE accounts SET balance = balance + 50 WHERE id = 2;
COMMIT; -- close it promptly, don't hold locks longer than needed
- यह मान लेना कि
COMMITके बादROLLBACKकाम करता है, जबकि committed changes permanent हैं। - एक transaction को लंबे समय तक खुला छोड़ना, जो locks hold करता है और दूसरे users को block करता है।
SET autocommit = 0सेautocommitबंद करना और फिर commit करना भूल जाना।
Chapter Quiz — Complete all 4 topics to unlock
0/4 topics done
Complete these topics first: