خلاصه: در این آموزش ، ما به شما نشان خواهیم داد که چگونه از معامله 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