یک تراکنش SQL بنویسید که ابتدا چند INSERT و UPDATE روی جداول نمونه انجام دهد، سپس یک SAVEPOINT تعریف کند، پس از اجرای یک عملیات که فرضا خطا دارد فقط به SAVEPOINT بازگردد (بدون لغو کل تراکنش) و در پایان تراکنش را COMMIT کند.
0.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:36 0.0
برای حل، از START TRANSACTION یا BEGIN برای آغاز تراکنش استفاده کنید، قبل از بخش پر خطر یک SAVEPOINT مانند SAVEPOINT sp1 بسازید، اگر آن بخش خطا داشت با ROLLBACK TO SAVEPOINT sp1 به وضعیت قبل از بخش خطا برگردید و در نهایت با COMMIT تغییرات معتبر را ثبت کنید؛ در صورت نیاز میتوانید با RELEASE SAVEPOINT sp1 حافظه را آزاد کنید. این دستورات در اکثر سیستمهای مدیریت رابطهای مثل PostgreSQL و MySQL پشتیبانی میشوند — هنگام آزمایش از SELECT برای تأیید وضعیت دادهها قبل و بعد از ROLLBACK استفاده کنید و نامهای واضح برای savepointها انتخاب کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
استفاده از SAVEPOINT این امکان را میدهد که بخش پرخطا را بدون لغو کل تراکنش به حالت قبل بازگردانید. نامگذاری واضح برای SAVEPOINTها مانند sp_before_error کار بازگشت را سادهتر میکند. در صورت بروز خطا، از ROLLBACK TO SAVEPOINT sp_before_error استفاده کنید و سپس با ادامه تراکنش، در نهایت آن را COMMIT کنید. در برخی سیستمها RELEASE SAVEPOINT لازم است یا مفهومی ندارد، اما معمولاً برای این سناریو کافی است.
گزارش