معاملات

ساخت وبلاگ

GORM عملیات نوشتن (ایجاد/به روزرسانی/حذف) را در داخل یک تراکنش اجرا می کند تا از سازگاری داده ها اطمینان حاصل کند، در صورت عدم نیاز، می توانید آن را در حین تنظیم اولیه غیرفعال کنید، پس از آن حدود 30% بهبود عملکرد خواهید داشت.

// به صورت جهانی غیرفعال شود db، err := gorm. Open(sqlite. Open("gorm. db"، & gorm. ConfigSkipDefaultTransaction:درست است، واقعی, >) // حالت جلسه پیوسته tx := db. Session(& Sessiontrue>) tx. First(& user,1) tx. Find(& کاربران) tx. Model(& user). Update("سن", 18)

معامله

برای انجام مجموعه ای از عملیات در یک تراکنش، جریان کلی به صورت زیر است.

db. Transaction(تابع(tx *gorm. DB) خطا // انجام برخی عملیات پایگاه داده در تراکنش (از این نقطه از 'tx' استفاده کنید، نه از 'db') iferr := tx. Create(& Animal"Giraffe">). خطاخطا!=صفر // بازگشت هر خطایی به عقب برمی گردد برگشتاشتباه کن > iferr := tx. Create(& Animal" Lion">). خطاخطا!=صفر برگشتاشتباه کن > // بازگشت صفر کل تراکنش را انجام می دهد برگشت صفر >)

معاملات تو در تو

GORM از تراکنش های تودرتو پشتیبانی می کند، می توانید زیرمجموعه ای از عملیات انجام شده در محدوده یک تراکنش بزرگ تر را به عقب برگردانید، برای مثال:

db. Transaction(تابع(tx *gorm. DB) خطا tx. Create(& user1) tx. Transaction(تابع(tx2 *gorm. DB) خطا tx2. Create(& user2) برگشتخطاها. جدید("کاربر برگشتی 2") // کاربر بازگشتی 2 >) tx. Transaction(تابع(tx2 *gorm. DB) خطا tx2. Create(& user3) برگشت صفر >) برگشت صفر >) // Commit user1, user3

تراکنش را به صورت دستی کنترل کنید

Gorm از فراخوانی مستقیم توابع کنترل تراکنش (تعهد / بازگشت) پشتیبانی می کند، به عنوان مثال:

// شروع یک تراکنش tx := db. Begin() // انجام برخی عملیات پایگاه داده در تراکنش (از این نقطه از 'tx' استفاده کنید، نه از 'db') tx. Create(.) // . // در صورت بروز خطا، تراکنش را برگردانید tx. Rollback() // یا معامله را انجام دهید tx. Commit()

یک مثال خاص

تابع ایجاد حیوانات(db *gorm. DB) خطا // به استفاده از tx به عنوان دسته پایگاه داده زمانی که در یک تراکنش قرار گرفتید توجه کنید tx := db. Begin() به تعویق انداختن تابع() ifr :=بهبود می یابند()؛r !=صفر tx. Rollback() > >() iferr := tx. Error; خطا!=صفر برگشتاشتباه کن > iferr := tx. Create(& Animal"Giraffe">). خطاخطا!=صفر tx. Rollback() برگشتاشتباه کن > iferr := tx. Create(& Animal" Lion">). خطاخطا!=صفر tx. Rollback() برگشتاشتباه کن > برگشتtx. Commit(). خطا >

SavePoint، RollbackTo

GORM SavePoint، RollbackTo را برای ذخیره امتیاز و بازگشت به یک ذخیره پوینت فراهم می کند، برای مثال:

tx := db. Begin() tx. Create(& user1) tx. SavePoint("sp1") tx. Create(& user2) tx. RollbackTo("sp1") // کاربر بازگشتی 2 tx. Commit()// Commit user1

راهنمای تجارت فارکس...
ما را در سایت راهنمای تجارت فارکس دنبال می کنید

برچسب : نویسنده : نسیم خاکسار بازدید : <-PostHit-> تاريخ : سه شنبه 14 شهريور 1402 ساعت: 17:55