PDA

View Full Version : ذخیره تراکنش ها و استفاده مجدد از اونها



IMANAZADI
پنج شنبه 25 تیر 1394, 19:41 عصر
با سلام
من نحوه نوشتن transaction (تراکنش) رو میدونم
ولی چطوری باید یک تراکنش رو در sql ذخیره کنم و با برنامه اونو اجرا کنم (یه چیزی مثل view یا store procedure ها )

چطوری باید یک یا چند تا پارامتر رو به یک تراکنش پاس داد ؟؟؟

آیا میشه یک مقدار رو توسط تراکنش برگشت داد ؟

IMANAZADI
شنبه 27 تیر 1394, 11:53 صبح
دوستان کسی جواب این سوال رو نمیدونه :گریه::متعجب::افسرده::متفکر:

IMANAZADI
یک شنبه 28 تیر 1394, 16:30 عصر
من همچنان منتظر جواب شما دوستان عزیز هستم:متفکر:

SabaSabouhi
دوشنبه 29 تیر 1394, 10:34 صبح
با سلام
من نحوه نوشتن transaction (تراکنش) رو میدونم
ولی چطوری باید یک تراکنش رو در sql ذخیره کنم و با برنامه اونو اجرا کنم (یه چیزی مثل view یا store procedure ها )

چطوری باید یک یا چند تا پارامتر رو به یک تراکنش پاس داد ؟؟؟

آیا میشه یک مقدار رو توسط تراکنش برگشت داد ؟

سلام
ماشالله چقدر کم صبر هستی، چون این چند روز تعطیل بوده خیلی‌ها به سایت سر نزدن. :لبخندساده:

1. تراکنش چیزی نیست که ذخیره بشه.
2. تو View نمی‌تونی از تراکنش استفاده کنی.
3. تو SP می‌تونی از تراکنش استفاده کنی و اگه بیش از یک تغییر به جدول یا جدول‌ها بدی، لازمه که استفاده کنی
4. تراکنش پارامتر نداره، اما می‌تونه اسم داشته باشه که زمانی به درد می‌خوره که تراکنش‌های متفاوتی رو
باز می‌کنی ( که معمولاً بیش از یک تراکنش نیاز نداری )
5. تراکنش تابع نیست که مقداری رو برگردونه.

خیلی ساده اگه بخوام بگم،
فرض کن داری یه کتاب می‌خونی، صفحه دهم، یک علامت می‌گذاری، و ادامه می‌دی، به صفحه 17 که رسیدی اگه
مطلب این چند صفحه رو درست فهمیدی، علامت رو بر می‌داری و کار رو ادامه می‌دی، اما این اختیار رو داری که
این چند صفحه رو برگردی و اون رو نخونده فرض کنی.

وقتی تراکنش باز می‌کنی، تمام عملیات انجام می‌شه، اما خارج از تراکنش دیده نمی‌شه. در پایان کار اگه Rollback کنی
همه‌ی کارهایی که انجام دادی نادیده گرفته می‌شه و انگار هیچ کاری انجام ندادی ( البته با این تفاوت که Identity جدول‌هایی
که توشون مقدار اضافه کردی کارشون رو انجام می‌دن و به همین دلیل هست که بعضی وقت‌ها می‌بینی که ستون‌هایی که
مقدار Identity دارن مقادیرشون پیوسته نیست )
و اگر Commit کنی، تمام مقادیر در دیتابیس ثابت می‌شن و دیگران هم می‌تونن اون رو ببینن.

نکته مهم اینه که هر عمل Insert, Update, Delete بدون این که کاربر کار خاصی انجام بده ( توسط خود Sql Server ) داخل یک
Transaction انجام می‌شه و به همین دلیل هست که شما می‌تونی توی Trigger با فرمان Rollback جلوی اجرای فرمان رو بگیری.

مهم‌ترین کارایی‌های Transaction
1. وقتی من می‌خوام چند تا جدول رو اصلاح کنم، مطمئن هستم که اگه وسط کار مشکلی پیش بیاد
یا همه‌ی اطلاعات ثبت شده یا هیچ‌چیری ثبت نشده ( یعنی نصفه و نیمه اطلاعات ثبت نمی‌شه )
2. وقتی من می‌خوام چند تا جدول رو اصلاح کنم، هیچ شخص دیگه‌ای تو یک یا چند تا از جدول‌های من
دخل و تصرف نداره.

نکته:
وقتی از Transaction استفاده می‌کنی به هیچ عنوان نباید منتظر تبادل اطلاعات با کاربر باشی.
یکی از دوستان وقتی فرم رو باز می‌کرد یک Transaction هم باز می‌کرد و با ذخیره یا صرف‌نظر
در فرم مربوطه Transaction رو Commit یا Rollback می‌کرد. برنامه‌اش هم رو دستگاه خودش خوب
اجرا می‌شد، بعد تعجب کرده بود که چرا تو شبکه غیر از نفر اول، برنامه رو دستگاه بقیه هنگ می‌کنه
و جواب نمی‌ده!

امیدوارم که مفید بوده باشه
صبا صبوحی