از کجا بفهمیم که تراکنش رول بک شده ؟
از کجا بفهمیم که تراکنش رول بک شده ؟
اگر توی database تغییری ایجاد نشده باشد یعنی اینکه Transaction شما rollback شده
مثلا اگر در مورد insert نوشته باشید و چیزی در Database وارد نگردد یعنی rollback شده
یا اگر در مورد update نوشته باشید و database شما update نشده باشد یعنی rollback شده و همینطور در مورد delete.
امیدوارم متوجه شده باشید.
منظور من این بود .
می خوام ببینم که اگر rollback شده دیگه Commit نکنم .
یعنی با یه If یا یه چیز دیگه این کار را انجام بدم
معمولا وقتی از شی Command استفاده میکنی (متد ExecuteNonQuery)اگر عملیات درست انجام شده باشه تعداد رکورد هایی که تحت تاثیر قرار گرفته اند رو برمیگردونه اگر صفر برگردونه یعنی هیچ کاری انجام نشده اونوقت می تونی متد RollBack شی SqlTransaction رو فراخونی کنی !
یه حالت هم وقتیه که Exception رخ میده اونوقت هم از متد RollBack توی Catch استفاده میکنی!
بهتره شما 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
برعکس که نباید کار کنیمی خوام ببینم که اگر rollback شده دیگه Commit نکنم .
یعنی با یه If یا یه چیز دیگه این کار را انجام بدم
اول باید Commit کنی توی یک Try و بعد از Catch دستور RollBack رو بنویسی
مرسی از دوستان که جواب دادین .
جواب Sh عزیز به کارم خورد . مرسی