PostgreSQLAdvanced
Transactions — ACID ও BEGIN/COMMIT/ROLLBACK
একাধিক operation এক কাজে বানানো — atomicity গ্যারান্টি।
5টি অংশবাংলা ভাষায়
order fulfill — সব-or-নথিংsql
sql
BEGIN;
UPDATE products SET qty = qty - 2 WHERE id = 1;
INSERT INTO order_items (order_id, product_id, qty, price)
VALUES (100, 1, 2, 24000);
COMMIT;
-- কোনো ভুল হলে: ROLLBACK;| ACID | অর্থ |
|---|---|
| Atomicity | সব সফল নতুবা কিছুই হয় না |
| Consistency | constraints সবসময় ঠিক থাকে |
| Isolation | concurrent transaction-এ আলাদা দেখায় |
| Durability | commit-এর পর data হারায় না |
psql-এ প্রতিটি statement নিজে auto-commit হয় — transaction-থাকতেBEGINদিলেই group- Error হলে transaction aborted —
ROLLBACKবাSAVEPOINT - Isolation level — READ COMMITTED (default) থেকে SERIALIZABLE
savepointsql
sql
BEGIN;
INSERT INTO products (name, price) VALUES ('A', 10);
SAVEPOINT after_a;
INSERT INTO products (name, price) VALUES ('B', 20);
-- B ভুল বুঝলাম — up to after_a ঘুরে যাই
ROLLBACK TO SAVEPOINT after_a;
COMMIT;ইন্টারঅ্যাক্টিভ সময়
Transaction খুলে রেখে (BEGIN → query gap) রাত চলে গেলে লক জমা হয়। সার্ভার code-এ transaction block স্বল্প-সময় রাখুন।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।