#AskMe

ការប្រើប្រាស់ Transaction ក្នុង SQL Server

មាតិកា

I.   សេចក្តីផ្តើម

II. Properties of Transactions

III. ប្រភេទនៃ Transaction

I.          សេចក្តីផ្តើម

ប្រសិនបើមានសំនុំ Statements ជាច្រើន ហើយពួកយើងចង់អោយ Statements ទាំងអស់នោះគួរតែត្រូវបាន execute ឬក៏មិនគួរ execute។ យើងអាចរក្សាទុក Statements ទាំងអស់នោះនៅខាងក្នុង Transactions។ Transaction ប្រាកដថា ការផ្លាស់ប្តូរនឹងត្រូវបានធ្វើឡើងឬគ្មានការផ្លាស់ប្តូរណាមួយនឹងត្រូវបានធ្វើ។

II.         Properties of Transactions

មាន properties នៃ transactions ចំនួន៤ ដែលត្រូវបានគេហៅថា ACID

1.) Atomicity:- នៅក្នុង Atomicity ដែល transaction និមួយៗគួរតែមាន unique number ដូច្នេះប្រសិនបើ transaction failed ឬក៏ abort  ក្នុងចំនុចណាមួយ យើងអាចមានភាពងាយស្រួល Rollback មកវិញបាន។
2.) Consistency: – នៅក្នុង Consistency ប្រសិនបើ transaction committed របស់យើងទទួលបានជោគជ័យ ពេលនោះ database នឹងត្រូវបាន change។

3. ) Isolation:- នៅក្នុង Isolation​ រាល់ transactions និមួយៗគួរតែ transparent ហើយនិង independent គ្នាទៅវិញទៅមក។
4. ) Durability: – In Durability ,result of each transaction should be persisted ,if in case system failure.

III.        ប្រភេទនៃ Transaction

នៅក្នុង Microsoft sql server មាន transactions ចំនួន ២ប្រភេទ

Implicit Transaction

នៅពេលដែលយើងធ្វើការ execute នូវ statement ណាមួយ នោះ sql server database engine នឹងចាប់ផ្តើមនូវ transaction ថ្មីដោយស្វ័យប្រវត្តិ បន្ទាប់ពី current transactions ត្រូវបាន committed។ នៅក្នុង Implicit transaction ប្រសិនបើយើងចង់ប្រើវា យើងមិនអាចធ្វើការ Rollback statement ត្រឡប់មកវិញបានទេ។ Implicit Transaction គឺ by default មាន Automatic នៅក្នុង SQL server។ យើងអាចកំណត់ set implicit_transactions on ទៅលើវាបាន។ ក៏ប៉ុន្តែវាមានភាពខុសគ្នាមួយចំនួន

នៅពេលដែល implicit transaction mode កំណត់ ON/off ពេលនោះ sql database ចាប់ផ្តើមនូវ transaction ប្រសិនបើយើងធ្វើការ execute (DDL command)  commands ដូចខាងក្រោម

Explicit Transaction

explicit transaction គឺជា explicitly កំណត់ដោយ begin (start) ហើយបញ្ចប់ដោយ transaction។ មាន control នៃ transaction មួយចំនួន ដែលត្រូវបានផ្តល់អោយដូចខាងក្រោមៈ

1.) Begin Transaction: – វាត្រូវបានប្រើដើម្បីកំណត់ពីចំនុចចាប់ផ្តើម (starting point) នៃ transaction ណាមួយ។

2.) Commit: – វាត្រូវបាន save changes នៅក្នុង Database.

ឧទាហរណ៍៖ យើងបានបង្កើត table មួយឈ្មោះថា employee ដូចរូប

នៅពេលដែលយើងធ្វើការ insert ទិន្នន័យ (data) ហើយ ដាក់ commit statement នៅខាងចុង statement បន្ទាប់មក output នឹងបង្ហាញដូចខាងក្រោម៖

3.) Rollback: – វាត្រូវបានប្រើដើម្បី Rollback ការផ្លាស់ប្តូរនៅក្នុង Database។ នៅពេលដែល error កើតឡើងរវាង transaction ជាមួយនឹងការជួយសង្រ្គោះដោយប្រើប្រាស៉ Rollback យើងអាចងាយស្រួល Rollback state របស់ transaction។

ប្រសិនបើយើងចង់ប្រើប្រាស់ commit ហើយនិង Rollback នៅក្នុង statement តែមួយ ពេលនោះ output នឹងបង្ហាញដូចរូបៈ

4.) Save Point: – យើងអាចផ្តល់ ‘save point’ ដើម្បីបែងចែក transaction ចូលទៅក្នុង sub logical transaction។ មានន័យថាប្រសិនបើនៅក្នុង transaction មានសំនុំនៃ statement ដែលត្រូវតែ execute ហើយសំនុំ statement ផ្សេងទៀតនឹងត្រូវបាន execute ឬក៏ Rollback ដែលពឹងអាស្រ័យទៅលើ condition មួយចំនួន។ បន្ទាប់មកយើងអាចផ្តល់នូវ Save Point ទៅកាន់ statement ទាំងនោះ ដែលត្រូវតែ committed.