دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
مدیریت تراکنش در پایگاه داده SQL
1404/02/06 -
کنترل LinkLable در سی شارپ
1404/02/05 -
عملگر تراکنش در پایگاه داده SQL
1404/02/02 -
کنترل Label در سی شارپ
1404/01/31 -
دستورات و فرامین تراکنش در پایگاه داده SQL
1404/01/30 -
کنترل FontDialog در سی شارپ
1404/01/29
مدیریت تراکنش در پایگاه داده SQL

مدیریت تراکنش در پایگاه داده SQL Server
یکی از مهمترین بخشهای سیستمهای پایگاه داده، مدیریت تراکنشها (Transaction Management) است.
تراکنشها به کاربران اجازه میدهند تا مجموعهای از دستورات SQL را به صورت یک واحد واحد منطقی از کار اجرا کنند که یا کاملاً انجام شوند یا در صورت بروز خطا به حالت اولیه بازگردند.
این موضوع تضمینکننده یکپارچگی دادهها و پایداری سیستم است.
در SQL Server، چهار دستور اصلی برای مدیریت تراکنشها استفاده میشود:
-
BEGIN TRAN
-
COMMIT TRAN
-
ROLLBACK TRAN
-
SAVE TRAN
تراکنش به مجموعهای از عملیات گفته میشود که به عنوان یک واحد منطقی اجرا میشوند.
اگر یک عملیات از این مجموعه با شکست مواجه شود، تمام عملیات باید به حالت قبل بازگردند.
این رویکرد باعث میشود پایگاه داده در وضعیت ناپایدار باقی نماند.
ویژگی اصلی تراکنشها
چهار ویژگی اصلی تراکنشها را میتوان با اصول ACID توضیح داد:
-
Atomicity (اتمی بودن)
همه یا هیچ. -
Consistency (سازگاری)
دادهها از یک حالت معتبر به حالت معتبر دیگر منتقل میشوند. -
Isolation (جداسازی)
تراکنشها مستقل از هم اجرا میشوند. -
Durability (پایداری)
پس از تأیید، نتایج تراکنش حفظ میشوند حتی در صورت خرابی سیستم.
دستور BEGIN TRAN
دستور BEGIN TRANSACTION شروع یک تراکنش را مشخص میکند.
پس از اجرای این دستور، سیستم تغییراتی را که در دادهها انجام میشود، نگه میدارد اما آنها را ذخیره دائمی نمیکند، مگر اینکه با COMMIT تایید شوند.
مثال:
BEGIN TRANSACTION;
UPDATE Accounts
SET Balance = Balance - 1000
WHERE AccountID = 1;
UPDATE Accounts
SET Balance = Balance + 1000
WHERE AccountID = 2;
در این مثال دو تغییر انجام میشود: کم شدن مبلغ از حساب اول و اضافه شدن به حساب دوم.
اگر یکی از این دستورات با شکست مواجه شود، باید کل تراکنش لغو شود.
دستور COMMIT TRAN
دستور COMMIT TRANSACTION باعث میشود تمامی تغییراتی که از شروع تراکنش انجام شدهاند، به صورت دائمی در پایگاه داده ذخیره شوند.
پس از اجرای این دستور، دیگر نمیتوان آن تغییرات را بازگرداند.
مثال:
BEGIN TRANSACTION;
UPDATE Accounts
SET Balance = Balance - 1000
WHERE AccountID = 1;
UPDATE Accounts
SET Balance = Balance + 1000
WHERE AccountID = 2;
COMMIT TRANSACTION;
در اینجا تراکنش به درستی به پایان میرسد و تغییرات ذخیره میشوند.
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟
با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!
این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.
با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.
پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
همین حالا شروع کنید و به دنیای دادهها بپیوندید!
دستور ROLLBACK TRAN
اگر در حین اجرای یک تراکنش خطایی رخ دهد یا شرایط خاصی برقرار نباشد، میتوان با استفاده از ROLLBACK تمام تغییرات انجام شده را بازگرداند و پایگاه داده را به حالت قبل از BEGIN TRAN برگرداند.
مثال:
BEGIN TRANSACTION;
UPDATE Accounts
SET Balance = Balance - 1000
WHERE AccountID = 1;
-- خطای فرضی
IF (SELECT Balance FROM Accounts WHERE AccountID = 1) < 0
BEGIN
ROLLBACK TRANSACTION;
PRINT 'موجودی کافی نیست، تراکنش بازگردانده شد.';
RETURN;
END
UPDATE Accounts
SET Balance = Balance + 1000
WHERE AccountID = 2;
COMMIT TRANSACTION;
دستور SAVE TRAN
SAVE TRANSACTION برای ایجاد یک نقطه بازیابی (Savepoint) در داخل یک تراکنش استفاده میشود.
در صورتی که بخشی از تراکنش با خطا مواجه شود، میتوان با ROLLBACK به آن نقطه خاص بازگشت، بدون اینکه کل تراکنش لغو شود.
مثال:
BEGIN TRANSACTION;
UPDATE Orders
SET Status = 'Processing'
WHERE OrderID = 1001;
SAVE TRANSACTION SavePoint1;
UPDATE Inventory
SET Quantity = Quantity - 10
WHERE ProductID = 500;
-- فرض کنید این دستور خطا میدهد
IF (SELECT Quantity FROM Inventory WHERE ProductID = 500) < 0
BEGIN
ROLLBACK TRANSACTION SavePoint1;
PRINT 'موجودی کافی نیست، به نقطه بازیابی بازگشت شد.';
END
COMMIT TRANSACTION;
در این مثال، فقط تغییرات بعد از SavePoint بازگردانده میشوند، اما تغییرات قبل از آن حفظ میشوند.
نکات پیشرفته در مدیریت تراکنش
-
تراکنشهای تودرتو (Nested Transactions)
SQL Server از مفهوم تراکنشهای تودرتو پشتیبانی میکند، اما فقط اولین COMMIT یا ROLLBACK مؤثر خواهد بود.
باقی موارد صرفاً شمارنده تراکنش را تغییر میدهند. -
متغیر TRANCOUNT
این متغیر نشان میدهد که چه تعداد تراکنش فعال وجود دارد.
برای بررسی وضعیت فعلی تراکنش بسیار کاربردی است.
SELECT @@TRANCOUNT;
-
خطاها و TRY...CATCH
برای مدیریت خطاها در تراکنشها، استفاده از ساختار TRY...CATCH توصیه میشود.
BEGIN TRY
BEGIN TRANSACTION;
-- عملیات
-- ...
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION;
PRINT ERROR_MESSAGE();
END CATCH;

مثال کاربردی از مدیریت تراکنش ها
BEGIN TRY
BEGIN TRANSACTION;
INSERT INTO Customers (Name, Email) VALUES ('Ali', 'ali@example.com');
SAVE TRAN SavePoint1;
INSERT INTO Orders (CustomerID, OrderDate) VALUES (999, GETDATE()); -- خطا، ID وجود ندارد
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION SavePoint1;
PRINT 'بخشی از تراکنش بازگردانده شد. خطا: ' + ERROR_MESSAGE();
END CATCH;
جمعبندی
مدیریت صحیح تراکنشها یکی از کلیدیترین مهارتها در توسعه و مدیریت پایگاه دادههاست.
استفاده هوشمندانه از BEGIN TRAN, COMMIT, ROLLBACK و SAVE TRAN به شما این امکان را میدهد که:
- دادهها را در برابر خطاها محافظت کنید.
- از ورود دادههای ناقص جلوگیری کنید.
- عملیات پیچیده را کنترل و مدیریت کنید.
یادگیری کامل این دستورات و استفاده از آنها در سناریوهای واقعی، تأثیر زیادی در امنیت و یکپارچگی سیستمهای اطلاعاتی خواهد داشت.
دوره های مرتبط

آموزش پایگاه داده SqlServer
پایگاه داده Sqlserver یکی از پایگاه داده های مهم برای ذخیره اطلاعات محسوب میشود .