معامله sqlite

ساخت وبلاگ

خلاصه: در این آموزش ، ما به شما نشان خواهیم داد که چگونه از معامله SQLite استفاده کنید تا از یکپارچگی و قابلیت اطمینان داده ها اطمینان حاصل شود.

sqlite & acid

SQLITE یک پایگاه داده معامله ای است که تمام تغییرات و نمایش داده ها دارای اتمی ، سازگار ، منزوی و بادوام (اسید) هستند.

SQLITE تضمین می کند که تمام معاملات حتی اگر معامله با یک تصادف برنامه ، زباله سیستم عملیاتی یا عدم برق در رایانه قطع شود ، مطابق اسید است.

  • TOMIC: یک معامله باید اتمی باشد. این بدان معناست که تغییر را نمی توان به موارد کوچکتر تقسیم کرد. وقتی مرتکب معامله می شوید ، یا کل معامله اعمال می شود یا خیر.
  • C در حال حاضر: یک معامله باید اطمینان حاصل کند که پایگاه داده را از یک حالت معتبر به حالت دیگر تغییر می دهد. هنگامی که معامله شروع می شود و بیانیه ای را برای تغییر داده ها اجرا می کند ، پایگاه داده متناقض می شود. با این حال ، هنگامی که معامله انجام شده یا به عقب برگردد ، مهم است که معامله باید پایگاه داده را ثابت نگه دارد.
  • I Solation: یک معامله در حال تعلیق که توسط یک جلسه انجام می شود باید از جلسات دیگر جدا شود. هنگامی که یک جلسه یک معامله را شروع می کند و بیانیه درج یا بروزرسانی را برای تغییر داده ها اجرا می کند ، این تغییرات فقط برای جلسه فعلی قابل مشاهده است ، نه دیگران. از طرف دیگر ، تغییرات انجام شده توسط جلسات دیگر پس از شروع معامله نباید برای جلسه فعلی قابل مشاهده باشد.
  • بادوام: اگر معامله با موفقیت انجام شود ، بدون در نظر گرفتن شرایطی مانند خرابی برق یا سقوط برنامه ، تغییرات باید در پایگاه داده دائمی باشد. در مقابل ، اگر برنامه قبل از انجام معامله خراب شود ، تغییر نباید ادامه یابد.

صورتهای معامله SQLite

به طور پیش فرض ، SQLITE در حالت کمبود خودکار فعالیت می کند. این بدان معناست که برای هر دستور ، SQLite شروع می شود ، فرآیند و مرتکب معامله می شود.

برای شروع معامله صریح ، از مراحل زیر استفاده می کنید:

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

 
شروع معامله;

زبان کد: SQL (زبان پرس و جو ساختاری) (SQL)

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

دوم ، برای انتخاب یا به روزرسانی داده ها در پایگاه داده ، بیانیه های SQL را صادر کنید. توجه داشته باشید که این تغییر فقط برای جلسه فعلی (یا مشتری) قابل مشاهده است.

سوم ، با استفاده از بیانیه معاملات تعهد یا تعهد ، تغییرات را در پایگاه داده انجام دهید.

 
مرتکب شدن;

زبان کد: SQL (زبان پرس و جو ساختاری) (SQL)

اگر نمی خواهید تغییرات را ذخیره کنید ، می توانید با استفاده از بیانیه معاملات Rollback یا Rollback به عقب برگردید:

 
بازپرداخت;

زبان کد: SQL (زبان پرس و جو ساختاری) (SQL)

مثال معامله SQLite

ما دو جدول جدید ایجاد خواهیم کرد: حساب و حساب_چنگ برای تظاهرات.

جدول Accounts داده ها را در مورد شماره حساب و مانده آنها ذخیره می کند. جدول Account_Changes تغییرات حساب ها را ذخیره می کند.

ابتدا با استفاده از بیانیه های جدول ایجاد زیر ، جداول حساب و حساب_چنگ را ایجاد کنید:

 
ايجاد كردن جدولحساب ها (حساب_نوعدد صحیح نه خالی، تعادلاعشاری نه خالی پیش فرض 0، اولیهکلید(شماره حساب)،بررسی(balance>= 0) ); ايجاد كردن جدولaccount_hanges (change_noدر نظر گرفتن نه خالیاولیهکلید، شماره حسابعدد صحیح نه خالی، پرچممتن نه خالی، میزاناعشاری نه خالی، تغییر کرده استمتن نه خالی );

زبان کد: SQL (زبان پرس و جو ساختاری) (SQL)

دوم ، برخی از داده های نمونه را در جدول حساب وارد کنید.

 
درج کردن بهحساب ها (Account_no ، مانده)ارزش های (100,20100); درج کردن بهحساب ها (Account_no ، مانده)ارزش های (200,10100);

زبان کد: SQL (زبان پرس و جو ساختاری) (SQL)

سوم ، داده های پرس و جو از جدول حساب ها:

 
انتخاب کنید * از جانبحساب ها؛

زبان کد: SQL (زبان پرس و جو ساختاری) (SQL)

چهارم ، 1000 را از حساب 100 به 200 منتقل کنید و تغییرات را به حساب جدول_چانگ در یک معامله واحد وارد کنید.

 
شروع معامله; به روز رسانیحساب هاتنظیمتعادل = تعادل -1000 جایی کهAccount_no =100; به روز رسانیحساب هاتنظیمتعادل = تعادل +1000 جایی کهAccount_no =200; درج کردن بهaccount_changes (حساب_نو ، پرچم ، مقدار ، تغییر_ at)ارزش های(100,'-',1000،زمان قرار('اکنون')); درج کردن بهaccount_changes (حساب_نو ، پرچم ، مقدار ، تغییر_ at)ارزش های(200,'+',1000،زمان قرار('اکنون')); مرتکب شدن;

زبان کد: SQL (زبان پرس و جو ساختاری) (SQL)

پنجم ، داده های پرس و جو از جدول حساب ها:

 
انتخاب کنید * از جانبحساب ها؛

زبان کد: SQL (زبان پرس و جو ساختاری) (SQL)

همانطور که مشاهده می کنید ، تعادل با موفقیت به روز شده است.

ششم ، محتوای جدول Account_Changes را پرس و جو کنید:

 
انتخاب کنید * از جانبحساب_چنگ ؛

زبان کد: SQL (زبان پرس و جو ساختاری) (SQL)

بیایید نمونه دیگری از بازگشت به یک معامله را بگیریم.

اول ، تلاش برای کسر 20،000 از حساب 100:

 
شروع معامله; به روز رسانیحساب هاتنظیمتعادل = تعادل -20000 جایی کهAccount_no =100; درج کردن بهaccount_changes (حساب_نو ، پرچم ، مقدار ، تغییر_ at)ارزش های(100,'-',20000،زمان قرار('اکنون'));

زبان کد: SQL (زبان پرس و جو ساختاری) (SQL)

SQLite به دلیل تعادل کافی خطایی صادر کرد:

 
[sqlite_constraint] سقط کردن ناشی از to محدودیت نقض (بررسی محدودیت ناموفق: حساب ها)

زبان کد: CSS (CSS)

با این حال ، ورود به سیستم در جدول Account_Changes ذخیره شده است:

 
انتخاب کنید * از جانبحساب_چنگ ؛

زبان کد: SQL (زبان پرس و جو ساختاری) (SQL)

دوم ، معامله را با استفاده از عبارت Rollback برگردانید:

 
بازپرداخت;

زبان کد: SQL (زبان پرس و جو ساختاری) (SQL)

سرانجام ، داده های پرس و جو از جدول Account_Changes ، خواهید دید که تغییر شماره 3 دیگر در آنجا نیست:

 
انتخاب کنید * از جانبحساب_چنگ ؛

زبان کد: SQL (زبان پرس و جو ساختاری) (SQL)

در این آموزش ، شما یاد گرفته اید که چگونه با استفاده از معاملات SQLite با استفاده از معاملات شروع ، تعهد و بازپرداخت برای کنترل معاملات در پایگاه داده SQLite ، با معاملات SQLite برخورد کنید.< pan> زبان کد:

مبانی اسکالپینگ...
ما را در سایت مبانی اسکالپینگ دنبال می کنید

برچسب : نویسنده : سید مهدی گلابی بازدید : <-PostHit-> تاريخ : دوشنبه 2 مرداد 1402 ساعت: 19:36