PDA

View Full Version : Transaction



محسن بابائی
دوشنبه 30 بهمن 1385, 13:39 عصر
از کجا بفهمیم که تراکنش رول بک شده ؟

miimii
سه شنبه 01 اسفند 1385, 09:13 صبح
اگر توی database تغییری ایجاد نشده باشد یعنی اینکه Transaction شما rollback شده
مثلا اگر در مورد insert نوشته باشید و چیزی در Database وارد نگردد یعنی rollback شده
یا اگر در مورد update نوشته باشید و database شما update نشده باشد یعنی rollback شده و همینطور در مورد delete.
امیدوارم متوجه شده باشید.

محسن بابائی
سه شنبه 01 اسفند 1385, 09:42 صبح
منظور من این بود .
می خوام ببینم که اگر rollback شده دیگه Commit نکنم .
یعنی با یه If یا یه چیز دیگه این کار را انجام بدم

Alireza_Salehi
سه شنبه 01 اسفند 1385, 10:21 صبح
معمولا وقتی از شی Command استفاده میکنی (متد ExecuteNonQuery)اگر عملیات درست انجام شده باشه تعداد رکورد هایی که تحت تاثیر قرار گرفته اند رو برمیگردونه اگر صفر برگردونه یعنی هیچ کاری انجام نشده اونوقت می تونی متد RollBack شی SqlTransaction رو فراخونی کنی !

یه حالت هم وقتیه که Exception رخ میده اونوقت هم از متد RollBack توی Catch استفاده میکنی!


Transactions (Transact-SQL) (http://msdn2.microsoft.com/en-us/library/ms174377.aspx)

SqlTransaction Class (http://msdn2.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction.aspx)

zerobit-ltd
سه شنبه 01 اسفند 1385, 13:09 عصر
بهتره شما transaction ها رو داخل sp ها استفاده کنید. چون سرعت بالاتری داره و کنترل راحت تری داره.
اگر داخل sp از transaction استفاده می کنید، می تونید بعد از insert یا update یا هر دستور دیگه ای مقدار متغیر error@@ رو چک کنید و اگر نامساوی صفر بود یا هر اتفاقی که مد نظر شما بود رخ داد، می تونید rollback کنید. بعد اگر return value شما مساوی مثلا 99 بود، یعنی تراکنش شما rollback شده.


begin tran
if @@error <> 0
begin
rollback tran
return 99
end
commit tran

sh
سه شنبه 01 اسفند 1385, 15:35 عصر
می خوام ببینم که اگر rollback شده دیگه Commit نکنم .
یعنی با یه If یا یه چیز دیگه این کار را انجام بدم
برعکس که نباید کار کنی

اول باید Commit کنی توی یک Try و بعد از Catch دستور RollBack رو بنویسی

محسن بابائی
چهارشنبه 02 اسفند 1385, 01:51 صبح
مرسی از دوستان که جواب دادین .
جواب Sh عزیز به کارم خورد . مرسی