استفاده از transaction در my sql

raha aria

New Member
من میدونم چه زمانی از تراکنش هااستفاده کنم اما بطور کامل نمی دونم چطور می تونم از دستورات
comit
&
rollback
استفاده کنم
و کلا کاربرد این دو دستور درتراکنش چیست؟
 

MDP

Well-Known Member
آموزش کار با Transaction ها در SQL Server 2005

سلام!

این آموزش مربوط به کار با Transaction ها در MS SQL Server 2005 هستش!

مقدمه:

در SQL ، TA ها برای انجام عملیات های خاصی استفاده می شود که باید تمام دستورات داخل آن به طور تضمینی اجرا شوند.

دستوراتی که در TA ها قرار می پیرند یا همه با هم اجرا می شوند و یا اگر مشکلی پیش بیاید هیچ یک از دستورات اجرا نشود!

طرزکار :
در MSSQL دستورات به صورت :

PHP:
Begin Transaction
شروع می شود و با

PHP:
RollBack Transaction و یا  Commit Transaction
خاتمه می یابد.

برای مثال :

PHP:
Begin Transaction
    Insert into Ticket_table(TiketID,Flight_NO) values ( '11','E22')
    Update Reserve Set number = number -1 where Flight_NO = '11'
Commit Transaction
وقتی موتور SQL یک دستور Begin Transaction را می بیندبلافاصله درون فایل TransactionLog یک درخواست ثبت می کند و شماره مخصوصی را به آن نسبت می دهد.

سپس دستورات بعد از Begin را شروع به اجرا می کند و برای هر دستور یک لاگ ذخیره میکند(برای Insert و Update در مثال بالا هر کدام یکی)

موتور SQL هنگامی که دستور Begin را می بیند تمامی جداولی که درون بلاکش قرار گرفته اند را لاک می کند!

زمانی که دستور Commit را می بیند جداول لاک شده را آزاد میکند و در فایل لاپ نیز یک رکورد مبنی بر اتمام TA قرار میدهد!

حال اگر به جای دستور Commit دستور Rollback قرار پیرد SQL از طریق همان فایل های Log که ثبت کردها است تمام دستورات را Cancel می کند!

نکته ای که در اینجا مهم اینه که در TA ها خاصیت تشخیص خطا وجود نداره و شما باید با منطق برنامه نویسی این مشکل رو حل کنید!

روش حل این مشکل خیلی سادست!

به دستورات زیر توجه کنید:

PHP:
Begin Try
    Begin Transaction
    -- Code Goes Here!!!
    commit Transaction
End Try
Begin Catch
    Rollback Transaction
End Catch
امید وارم مفید باشه!!!
 

جدیدترین ارسال ها

بالا