آیا می توانیم از تراکنش در رویه ذخیره شده استفاده کنیم؟
آیا می توانیم از تراکنش در رویه ذخیره شده استفاده کنیم؟

تصویری: آیا می توانیم از تراکنش در رویه ذخیره شده استفاده کنیم؟

تصویری: آیا می توانیم از تراکنش در رویه ذخیره شده استفاده کنیم؟
تصویری: آموزش کیف پول تراست ولت / Trust Wallet / آموزش نصب ، دریافت و پرداخت در تراست والت 2024, آوریل
Anonim

اگر ما بیش از یک دستور SQL در حال اجرا در رویه ذخیره شده و ما می‌خواهید هر تغییری را که توسط هر یک از دستورات SQL انجام شده است، در صورت بروز خطا به دلیل یکی از دستورات SQL، برگردانید، می توانیم از تراکنش در رویه ذخیره شده استفاده کنیم.

درست است، آیا رویه های ذخیره شده در یک تراکنش اجرا می شوند؟

تو در تو رویه های ذخیره شده هستند اجرا شده در معامله زمینه بیرونی ترین رویه ذخیره شده . این تنظیمات پیش فرض است. رفتار پیش فرض توضیح داده شده در بالا را ارائه می دهد. یعنی تمام دستورات SQL در a اجرای رویه ذخیره شده به عنوان مجرد معامله مسدود کردن.

علاوه بر بالا، آیا می توانیم از commit در رویه استفاده کنیم؟ به طور کلی، رویه ها نباید مرتکب شدن . اگر شما مرتکب شدن داخل یک ذخیره شده روش ، قابلیت استفاده مجدد آن را محدود می کنید زیرا تماس گیرنده ای که می خواهد آن را تغییر می دهد روش باعث می شود که بخشی از یک تراکنش بزرگتر باشد، به سادگی نمی توان آن را فراخوانی کرد روش به طور مستقیم.

با توجه به این موضوع، آیا می توانیم از تراکنش در تابع SQL استفاده کنیم؟

1 پاسخ. از همین رو معاملات غیر ضروری هستند برای sql -سرور کارکرد . با این حال، شما می توان تغییر دادن معامله سطح انزوا، برای مثال، ممکن است استفاده کنید اشاره NOLOCK برای رسیدن به "خواندن نامتعهد" معامله سطح جداسازی و خواندن داده های غیرمتعهد از دیگران معاملات.

آیا می‌توانیم از تراکنش‌های تودرتو در SQL استفاده کنیم، اگر بله، چگونه؟

SQL سرور واقعاً پشتیبانی نمی کند معاملات تو در تو . فقط یکی هست معامله در یک زمان. این یکی معامله یک پایه دارد معامله تو در تو شمارنده، @@TRANCOUNT. هر متوالی شروع می شود معامله افزایش را شمارنده توسط یک، هر commit معامله یک عدد آن را کاهش می دهد.

توصیه شده: