လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI :: database rollack ယန္တရားတွင် MySQLI :: REAND_SAVEPINDPOINT ၏အခန်းကဏ် is မှာအဘယ်နည်း။

MySQLI :: database rollack ယန္တရားတွင် MySQLI :: REAND_SAVEPINDPOINT ၏အခန်းကဏ် is မှာအဘယ်နည်း။

gitbox 2025-08-22

1 ။ အရောင်းအ 0 ယ်များနှင့် Rollback ယန္တရားများကားအဘယ်နည်း။

MySQLI :: Release_Savepoint သို့မ 0 င်မီကျွန်ုပ်တို့သည်အရောင်းအ 0 ယ်များနှင့် Rollback ယန္တရားကိုနားလည်ရန်လိုအပ်သည်။ ငွေပေးငွေယူသည်ဒေတာဘေ့စ်လုပ်ငန်းများစုဆောင်းခြင်းကိုအောင်မြင်စွာလုပ်ဆောင်ခြင်းသို့မဟုတ်ကျရှုံးခြင်းနှင့်ဖြည့်စွက်ခြင်း, အရောင်းအ 0 ယ်များသည်များသောအားဖြင့်အောက်ပါဝိသေသလက်ခဏာ 4 ခုပါ 0 င်သည်။

  • Utticity - ငွေပေးငွေယူတွင်စစ်ဆင်ရေးအားလုံးတွင်အပြည့်အဝကွပ်မျက်ခံရခြင်းသို့မဟုတ်အကုန်လုံးကွပ်မျက်ခံရခြင်းမရှိပါ။

  • ရှေ့နောက်ညီညွတ်မှု - ငွေပေးချေမှုမပြုမီနှင့်ပြီးနောက်ဒေတာဘေ့စ်သည်တသမတ်တည်းပြည်နယ်တွင်ရှိရမည်။

  • အထီးကျန်ခြင်း - ငွေပေးငွေယူတစ်ခု၏ကွပ်မျက်ခြင်းကိုအခြားအရောင်းအ 0 ယ်များကနှောင့်ယှက်ခြင်းမပြုသင့်ပါ။

  • ကြာရှည်ခံမှု - ငွေပေးငွေယူပြီးနောက်ဒေတာဘေ့စ်သို့ပြောင်းလဲမှုများသည်အမြဲတမ်းဖြစ်သည်။

ငွေပေးငွေယူကွပ်မျက်ခံရစဉ်အမှားအယွင်းတစ်ခုဖြစ်သောအခါ developer သည် Develback ယန္တရားကိုငွေပေးချေမှုမပြုမီ၎င်း၏ပြည်နယ်သို့ပြန်လည်ထူထောင်ရန် ROLLBACE ယန္တရားကိုသုံးနိုင်သည်။ Rollback SQL ကြေငြာချက်မှတဆင့်ဖြန့်ချိမှုကိုအကောင်အထည်ဖော်နိုင်သည်။

2 ။ ကယ်တင်ခြင်းဆိုတာဘာလဲ။

Savepoint တစ်ခုသည်ငွေပေးငွေယူတွင်အမှတ်အသားတစ်ခုတွင်အမှတ်အသားတစ်ခုဖြစ်သည်။ ငွေပေးငွေယူတွင်ပြ problems နာများရှိသည့်အခါ developer သည်ငွေပေးငွေယူတစ်ခုလုံးကိုလုံးဝပြန်လှိမ့်ချမည့်အစားအခှေကိုပြန်လှိမ့်နိုင်သည်။ ၎င်းသည်အမှားအယွင်းများကြောင့်ဖြစ်ရတဲ့ oddback အကွာအဝေးကိုလျှော့ချနိုင်ပြီးထိရောက်မှုကိုတိုးတက်စေနိုင်သည်။

ဥပမာအားဖြင့်, ငွေပေးငွေယူတစ်ခုအနေဖြင့်စစ်ဆင်ရေးတစ်ခုလိုအပ်သည်ဆိုပါစို့။ အချို့သောအဆင့်များတွင် developer သည်အောင်မြင်စွာလုပ်ဆောင်သွားမည့်လုပ်ငန်းများဆုံးရှုံးသွားမည့်အစားအချို့သောစစ်ဆင်ရေးများကိုပယ်ဖျက်ရန်အပြည့်အ 0 ကိုသုံးနိုင်သည်။

3 ။ MySQLI :: refort_savepoint function ကို၏အခန်းကဏ်။

MySQLI :: Release_SavePoint function ကိုအရောင်းအ 0 ယ်တစ်ခုတွင်ဖန်တီးထားသောသိမ်းဆည်းမှုတစ်ခုကိုဖြည်ချရန်အသုံးပြုသည်။ Support Point မလိုအပ်တော့ကြောင်း developer ကအတည်ပြုသည့်အခါ function ကိုအခမဲ့ခေါ်ဆိုနိုင်ပြီးဒေတာဘေ့စ်တွင်မရှိတော့သည့်အရင်းအမြစ်များကိုသန့်ရှင်းရေးပြုလုပ်နိုင်သည်။ ဤ၏အားသာချက်မှာငွေပေးငွေယူတွင်သိမ်းဆည်းထားသည့်အချက်များကိုလျှော့ချရန်နှင့်ထိရောက်သောငွေပေးငွေယူစီမံခန့်ခွဲမှုများကိုသေချာစေရန်ကူညီပေးသည်။

သဒ္ဒါ:
 <span><span>mysqli::</span><span><span class="hljs-title function_ invoke__">release_savepoint</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$savepoint</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>
  • $ Savepoint : ဖြန့်ချိမည့်အမြင့်ဆုံးနေရာ၏အမည်။

Value ကိုပြန်သွားပါ
  • အောင်မြင်မှု - စစ်မှန်တဲ့ ပြန်လာပါ။

  • မအောင်မြင်ပါ - မှားယွင်းသောမှားယွင်းသော နှင့်အမှားအချက်အလက်များကို MySQLI_ERROR () မှတဆင့်ရနိုင်သည်။

4 ။ ဥပမာ - MySQLI :: reauntipping_saverpoint ကို သုံးပါ

MySQLI :: REAND_SAVEPINGPOINT ကို မည်သို့အသုံးပြုရမည်ကိုပြသသည့်ဥပမာတစ်ခုမှာ -

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-comment">// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"ဆက်သွယ်မှုမအောင်မြင်ပါ: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// ငွေပေးငွေယူတစ်ခုစတင်ပါ</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">begin_transaction</span></span><span>();

</span><span><span class="hljs-keyword">try</span></span><span> {
    </span><span><span class="hljs-comment">// Save Point ကိုဖန်တီးပါ</span></span><span>
    </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"SAVEPOINT savepoint1"</span></span><span>);

    </span><span><span class="hljs-comment">// အချို့သောဒေတာဘေ့စ်စစ်ဆင်ရေးလုပ်ဆောင်ပါ</span></span><span>
    </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO users (name, email) VALUES ('John Doe', '[email protected]')"</span></span><span>);
    
    </span><span><span class="hljs-comment">// အခြားသိမ်းဆည်းရန်အချက်တစ်ခုကိုဖန်တီးပါ</span></span><span>
    </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"SAVEPOINT savepoint2"</span></span><span>);
    
    </span><span><span class="hljs-comment">// အခြားလုပ်ရပ်များလုပ်ဆောင်ပါ</span></span><span>
    </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO orders (user_id, product) VALUES (LAST_INSERT_ID(), 'Laptop')"</span></span><span>);

    </span><span><span class="hljs-comment">// ဒီမှာအမှားတစ်ခုရှိတယ်ဆိုပါစို့,နောက်ကျောလှိမ့်ဖို့လိုအပ်ပါတယ်savepoint1</span></span><span>
    </span><span><span class="hljs-comment">// သင်ပြန်လှိမ့်ချင်လျှင်savepoint1,အသုံးပြုနိုင်ROLLBACK TO SAVEPOINTအသေအချာပေြာဆိုချက်</span></span><span>
    </span><span><span class="hljs-comment">// $mysqli-&gt;query("ROLLBACK TO SAVEPOINT savepoint1");</span></span><span>

    </span><span><span class="hljs-comment">// အရာအားလုံးကောင်းစွာသွားလျှင်,Save Point ကိုလွှတ်ပေးပါ</span></span><span>
    </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">release_savepoint</span></span><span>(</span><span><span class="hljs-string">"savepoint1"</span></span><span>);

    </span><span><span class="hljs-comment">// တင်သွင်းမှုတင်သွင်း</span></span><span>
    </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">commit</span></span><span>();
} </span><span><span class="hljs-keyword">catch</span></span><span> (</span><span><span class="hljs-built_in">Exception</span></span><span> </span><span><span class="hljs-variable">$e</span></span><span>) {
    </span><span><span class="hljs-comment">// ချွင်းချက်များကိုဖမ်းခြင်းနှင့်ငွေပေးငွေယူတစ်ခုလုံးကိုပြန်လှိမ့်ပါ</span></span><span>
    </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">rollback</span></span><span>();
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ငွေပေးငွေယူ Loverback: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}

</span><span><span class="hljs-comment">// ဒေတာဘေ့စ် connection ကိုပိတ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

အထက်ပါကုဒ်၌:

  • SavePoint ကိုအသုံးပြုပြီးအပြည့်အဝကိုဖန်တီးပါ။

  • Savepoint1 ကို လွှတ်ရန် MySQLI :: REAND_SAVEPINGPOINT ကို သုံး. ဤသိမ်းဆည်းမှုမရှိတော့ကြောင်းညွှန်ပြသည်။

  • အကယ်. ငွေသွင်းငွေလွှဲမှုမအောင်မြင်ပါက Savepoint မှတဆင့် RollBack မှတစ်ဆင့်ငွေပေးချေမှုတစ်ခုလုံးကိုပြန်လည် ထုတ်ယူခြင်း သို့ပြန်သွားနိုင်သည်။

5 ။ MySQLI :: refort_saverpoint ကို အဘယ်ကြောင့်သုံးရသနည်း။

MySQLI :: unformation_saverpoint ၏အဓိကလုပ်ဆောင်ချက်သည်မလိုအပ်တော့ပါ။ ထို့အပြင်အရင်းအမြစ်များကိုအချိန်မီသန့်ရှင်းရေးလုပ်ရန်ဖြစ်သည်။ အထူးသဖြင့်ရှုပ်ထွေးသောအရောင်းအ 0 ယ်များကိုကိုင်တွယ်သည့်အခါသိမ်းဆည်းရန်အချက်များအားလုံးကိုသတ်မှတ်နိုင်သည်။ အကယ်. ဤသိမ်းဆည်းထားသည့်အချက်များကိုမဖြန့်ဖြူးပါကသူတို့သည်စနစ်အရင်းအမြစ်များကို ဆက်လက်. သိမ်းပိုက်ပြီးဒေတာဘေ့စ်၏စွမ်းဆောင်ရည်ကိုအကျိုးသက်ရောက်လိမ့်မည်။ ထို့ကြောင့် MySQLI :: REAND_SAVEPINGPOINT ကို သုံး. မလိုအပ်တော့မည့်သိမ်းဆည်းရန်နေရာများကိုဖြန့်ချိရန်အရင်းအမြစ်များကိုစီမံရန်ကောင်းသောနည်းလမ်းဖြစ်သည်။

  • Save အရင်းအမြစ်များကို သိမ်းရန်အရင်းအမြစ်များကိုစွန့်ပစ်ခြင်းမရှိတော့ပါ။

  • စွမ်းဆောင်ရည်တိုးတက်လာခြင်း

  • ပိုမိုကောင်းမွန်သောထိန်းသိမ်းထားမှု - ရှည်လျားသောအရောင်းအ 0 ယ်များတွင်ငွေပေးငွေယူစီမံခန့်ခွဲမှုသည်မလိုအပ်တော့ပါ။

6 ။ အကျဉ်းချုပ်

MySQLI :: Dound_SavePoint -point function သည်ဒေတာဘေ့စ်အရောင်းအ 0 ယ်များ၏ Rollback ယန္တရားတွင်အရေးပါသောအခန်းကဏ် plays မှပါ 0 င်သည်။ ၎င်းသည်အရင်းအမြစ်အသုံးပြုမှုကိုလျော့နည်းစေပြီးမလိုအပ်တော့မည့်အချက်များကိုကယ်တင်ရန်ကူညီခြင်းဖြင့်ငွေပေးငွေယူထိရောက်မှုကိုပိုမိုကောင်းမွန်စေသည်။ ရှုပ်ထွေးသောဒေတာဘေ့စ်စစ်ဆင်ရေးများနှင့်ဆက်ဆံရာတွင်သိမ်းဆည်းထားသည့်သိမ်းဆည်းမှုနှင့် ဖြန့်ချိရေးအတွက် ဆင်ခြင်တုံတရားအသုံးပြုခြင်းသည်ကုဒ်၏ဖတ်နိုင်မှု, ထိန်းသိမ်းခြင်းနှင့်စွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်စေနိုင်သည်။