កុំព្យូទ័រមូលដ្ឋានទិន្នន័យ

"Pitfalls" នៃពាក្យបញ្ជា DML ធ្វើឱ្យទាន់សម័យ MySQL

អ្នកសរសេរកម្មវិធីម្នាក់ៗដែលបានធ្វើការជាមួយមូលដ្ឋានទិន្នន័យបានជួបនឹងប្រតិបត្តិករ DML (ដូចជា "ភាសាការរៀបចំទិន្នន័យ") ដូចជា ជ្រើសរើសយក បញ្ចូល និង លុប និង ធ្វើបច្ចុប្បន្នភាព បរិស្ថាន MySQL ប្រើទាំងអស់នៃពាក្យបញ្ជាខាងលើនៅក្នុងក្រុម Arsenal របស់ខ្លួន។

ប្រតិបត្តិករទាំងនេះបង្ហាញឡូជីខលបង្ហាញពីគោលបំណងរបស់ពួកគេ - ជ្រើសកំណត់ត្រាបញ្ចូលតម្លៃថ្មីធ្វើបច្ចុប្បន្នភាពទិន្នន័យមានស្រាប់ពេញលេញឬយោងតាមលក្ខខណ្ឌដែលបានបញ្ជាក់ការលុបព័ត៌មានក្នុងមូលដ្ឋានទិន្នន័យ។ ការបង្រៀនទ្រឹស្តីទ្រឹស្តីពណ៌នាយ៉ាងលំអិតនូវគោលការណ៍ការងាររបស់ក្រុមនិមួយៗនិងវាក្យសម្ព័ន្ធរបស់ពួកគេប៉ុន្តែមិនមានការលើកឡើងអំពីការលំបាកដែលអាចកើតឡើងក្នុងការអនុវត្តក្នុងអំឡុងពេលប្រើប្រាស់។ សម្ភារៈនេះនឹងត្រូវបានយកចិត្តទុកដាក់ក្នុងការពិចារណាលើមួយចំនួននៃពួកគេ។

សង្ខេបអំពីប្រតិបត្តិករ DML (បញ្ចូល)

មុននឹងបន្តទៅមុខទៀតវាចាំបាច់ត្រូវរំលឹកឡើងវិញម្តងទៀតអំពីគោលបំណងនៃមុខងារនីមួយៗ។ យើងនឹងចាប់អារម្មណ៍កាន់តែខ្លាំងចំពោះប្រតិបត្តិករទាំងពីរគឺ: បញ្ចូល និង ធ្វើបច្ចុប្បន្នភាព ពីព្រោះវាមកពីបញ្ហាទាំងនេះដែលបញ្ហាចំបងកើតឡើងនៅពេលដំណើរការទិន្នន័យច្រើន

អ្នកត្រូវចាប់ផ្ដើមដោយប្រើពាក្យបញ្ជា បញ្ចូល ហើយបន្ទាប់មកចូលទៅយ៉ាងរលូនដើម្បី ធ្វើបច្ចុប្បន្នភាព។ ប្រព័ន្ធ MySQL ដូចជា DBMS សម័យទំនើបផ្សេងទៀតប្រើប្រតិបត្តិការ បញ្ចូល ដើម្បីបញ្ចូលធាតុថ្មីទៅ តារាងមូលដ្ឋានទិន្នន័យ ដែលមានស្រាប់ ។ វាក្យសម្ព័ន្ធនៃប្រតិបត្តិការនេះគឺសាមញ្ញណាស់និងមិនស្មុគស្មាញ។ វាមានការរាប់នៃវាលដែលតម្លៃត្រូវបានបញ្ចូលទិសដៅគឺជាឈ្មោះនៃតារាង - និងបញ្ជីធាតុដោយផ្ទាល់។ រាល់ពេលដែលពាក្យបញ្ជា បញ្ចូល ត្រូវបានប្រតិបត្តិមូលដ្ឋានទិន្នន័យនឹងត្រូវបានធ្វើបច្ចុប្បន្នភាពជាមួយតម្លៃថ្មី។

ធ្វើប្រតិបត្តិការទាន់សម័យ

នៅក្នុងការអនុវត្តទោះជាយ៉ាងណាស្ថានភាពតែងតែកើតឡើងដែលសម្រាប់សំណុំទិន្នន័យមួយគុណតម្លៃមួយឬច្រើនត្រូវតែធ្វើឱ្យទាន់សម័យ។ ជាឧទាហរណ៍យើងអាចដកស្រង់ពីស្ថានការណ៍នៅពេលដែលសហគ្រាសត្រូវបានធ្វើកំណែទម្រង់ជាមួយនឹងការប្តូរឈ្មោះរបស់នាយកដ្ឋានសំខាន់ៗ។ ក្នុងករណីនេះចាំបាច់ត្រូវធ្វើការផ្លាស់ប្តូរផ្នែកនីមួយៗ។ ប្រសិនបើឈ្មោះគ្រាន់តែផ្លាស់ប្តូរនោះបញ្ហានឹងត្រូវបានដោះស្រាយយ៉ាងឆាប់រហ័ស។ ប៉ុន្តែប្រសិនបើការអ៊ិនកូដនៃសមាសធាតុនីមួយៗនៃការផលិតទាំងមូលដែលផ្លាស់ប្តូរដែលជាវិធានមួយដែលដើរតួជាកូនសោបឋមនេះនេះតម្រូវឱ្យមានការផ្លាស់ប្តូរព័ត៌មាននិងសម្រាប់បុគ្គលិកម្នាក់ៗ។

ដើម្បីដោះស្រាយបញ្ហានេះ ប្រតិបត្តិករ DML- Update អាចត្រូវបានអនុវត្ត ម៉ាស៊ីនមេ MySQL ដែលប្រតិបត្ដិការជាមួយកំណត់ត្រាធំ ៗ ដោយប្រើប្រតិបត្តិករធ្វើបច្ចុប្បន្នភាពនឹងដំណើរការសំណួរដែលបានស្នើសុំហើយដោះស្រាយបញ្ហា។ ប៉ុន្តែជួនកាលក្នុងអំឡុងពេលធ្វើបច្ចុប្បន្នភាពវាមិនច្បាស់លាស់និងពិបាកក្នុងការពន្យល់អំពីបញ្ហាលំបាកទេ។ វាគឺអំពីភាពស្មុគស្មាញនៃការធ្វើបច្ចុប្បន្នភាពកំណត់ត្រាដែលនឹងត្រូវពិភាក្សានៅពេលក្រោយ។

អំពីអ្វីដែលតិចតួចត្រូវបានគេនិយាយថានៅក្នុងទ្រឹស្តី ...

ពាក្យបញ្ជាធ្វើបច្ចុប្បន្នភាពដែលបានកត់សម្គាល់ខាងលើត្រូវបានប្រើដើម្បីធ្វើបច្ចុប្បន្នភាពកំណត់ត្រាដែលមានស្រាប់នៅក្នុងតារាង។ ប៉ុន្តែក្នុងការអនុវត្តជាក់ស្តែងម៉ាស៊ីនភ្ញៀវចូលប្រើម៉ាស៊ីនបម្រើមូលដ្ឋានទិន្នន័យមិនត្រូវបានគេស្គាល់ជាទូទៅទេមានសំណុំជាក់លាក់នៃទិន្នន័យនៅក្នុងតារាងឬអត់។ ការផ្ទៀងផ្ទាត់ដំបូងនៃទិន្នន័យដែលមាននៅក្នុងមូលដ្ឋានទិន្នន័យសម្រាប់ការធ្វើឱ្យទាន់សម័យជាបន្តបន្ទាប់នាំឱ្យមានការប្រើប្រាស់ពេលវេលានិងខ្ជះខ្ជាយម៉ាស៊ីនមេ។

ដើម្បីចៀសវាងការនេះ DBMS រួមបញ្ចូល MySQL ពិសេស - បញ្ចូល * ធ្វើបច្ចុប្បន្នភាព សាងសង់ដែលការបញ្ចូលឬការធ្វើឱ្យទាន់សម័យអាចត្រូវបានប្រតិបត្តិដាច់ដោយឡែកពីគ្នា។ នោះគឺនៅពេលដែលមានធាតុមួយសម្រាប់លក្ខខណ្ឌជាក់លាក់មួយនៅក្នុងតារាងការធ្វើបច្ចុប្បន្នភាពនឹងកើតឡើង។ ប្រសិនបើរកមិនឃើញទិន្នន័យសម្រាប់លក្ខខណ្ឌក្នុងសំណួរម៉ាស៊ីនបម្រើ MySQL នឹងអាចអនុវត្តសំណើរសុំបន្ថែម។

ធ្វើបច្ចុប្បន្នភាពទិន្នន័យប្រសិនបើមានស្ទួន

សមាសភាគសំខាន់នៃបែបបទ បញ្ចូល - សំណួរក្នុងប្រព័ន្ធគ្រប់គ្រងមូលដ្ឋានទិន្នន័យ MySQL គឺ " បុព្វបទនៃការ ធ្វើបច្ចុប្បន្នភាពកូនសោស្ទួន" ។ វាក្យសម្ពន្ធពេញលេញនៃសំណួរគឺដូចខាងក្រោម: " បញ្ចូលទៅក្នុង test_table (និយោជក _ ឈ្មោះ, ឈ្មោះ) តម្លៃ (1, 'Abramov') លើការធ្វើបច្ចុប្បន្នភាពគន្លឹះស្ទួន last_modified = NOW (); "។

ការស្នើសុំបែបនេះអាចត្រូវបានប្រើដើម្បីកត់ត្រាសកម្មភាពរបស់និយោជិតឧទាហរណ៍ការកំណត់ពេលឆ្លងកាត់នៃសហគ្រាសឆ្លងកាត់ដោយការគណនាជាបន្តបន្ទាប់នៃពេលវេលាសម្រាកនិងការកំណត់អត្តសញ្ញាណនៃការពន្យារពេល។ ដើម្បីមិនបញ្ចូលកំណត់ត្រាជាច្រើនទៅក្នុងតារាងវាគ្រប់គ្រាន់សម្រាប់បុគ្គលិកម្នាក់ៗរក្សាទុកកំណត់ត្រាដោយអាប់ដេតអចិន្រ្តៃយ៍។ វាគឺជាការរចនានៃការត្រួតពិនិត្យស្ទួនដែលអនុញ្ញាតឱ្យអ្នកធ្វើការនេះ។

ជាការពិតអំពីបញ្ហា ...

ពិចារណាឧទាហរណ៍ខាងលើនៃការចុះបញ្ជីសកម្មភាពរបស់និយោជិតនៅប៉ុស្តិ៍ត្រួតពិនិត្យបញ្ហាអាចជាការប្រើវាល បង្កើន ស្វ័យប្រវត្ត ដែលជាទូទៅត្រូវបានប្រើដើម្បីបំពេញតម្លៃរបស់ _keys ចម្បង។ នៅពេលប្រើពាក្យបញ្ជា ធ្វើបច្ចុប្បន្នភាព MySQL នៅក្នុងការរចនាជាមួយ Insert ដោយស្វ័យប្រវត្តិ _ បង្កើន, វាលនេះត្រូវបានកើនឡើងជានិច្ច។

ស្រដៀងគ្នានេះដែរអ្វីគ្រប់យ៉ាងកើតឡើងនៅពេលការរចនាជំនួសត្រូវបានប្រើក្នុងករណីដែលមានការរកឃើញស្ទួន។ តម្លៃ "Autoincremental" កើនឡើងសូម្បីតែនៅពេលដែលវាមិនចាំបាច់ក៏ដោយ។ ដោយសារតែនេះមានបញ្ហានៃតម្លៃដែលបាត់ឬលើសចំណុះនៃជួរដែលនៅក្នុងការនាំមុខជាបន្តទៅការរំលោភលើការអនុវត្តប្រព័ន្ធគ្រប់គ្រងទិន្នន័យ។

ប្រូបាប៊ីលីតេខ្ពស់បំផុតនៃការកើតឡើងនៃបញ្ហា

បញ្ហាដែលបានពិពណ៌នាគួរតែត្រូវបានពិចារណាដោយអ្នកអភិវឌ្ឍន៍ វិបសាយ ពីព្រោះវាមានលក្ខណៈជាទូទៅបំផុតនៅក្នុងប្រព័ន្ធអ្នកប្រើច្រើន (គេហទំព័រអ៊ីធឺណិតនិងវិបផតថលជាដើម) នៅពេលដែលមាន បញ្ចូលច្រើន និង ធ្វើឱ្យទាន់សម័យកម្មវិធី MySQL ។

កម្មវិធី PHP - ការហៅទៅមូលដ្ឋានទិន្នន័យត្រូវបានអនុវត្តយ៉ាងញឹកញាប់។ ដូច្នេះសមិទ្ធផលនៃតម្លៃអតិបរមាដោយវាលដែលកំណត់ដោយការ បង្កើនស្វ័យប្រវត្តិ កើតមានឡើងយ៉ាងឆាប់រហ័សហើយនៅពេលវិភាគការលំបាកដែលបានជួបប្រទះវាមិនអាចបង្កើតមូលហេតុបានភ្លាមៗទេ។

ដូច្នេះអ្នកអភិវឌ្ឍន៍ត្រូវបានគេណែនាំអោយយកចិត្តទុកដាក់ប្រើវិធីសាស្ត្រ ស្ទួន លើពាក្យបញ្ជា ធ្វើបច្ចុប្បន្នភាព mysql ។ ជ្រើសរើស - សំណួរនៅពេលចូលប្រើម៉ាស៊ីនមេមូលដ្ឋានទិន្នន័យនឹងដំណើរការដោយគ្មានកំហុសប៉ុន្តែការបន្ថែមកំណត់ត្រាថ្មីៗទៅមូលដ្ឋានទិន្នន័យគឺមានស្ថានភាពមិនល្អដែលបណ្តាលឱ្យមានបញ្ហាធ្ងន់ធ្ងរ។ ជាជម្រើសមួយវាត្រូវបានផ្ដល់អនុសាសន៍សម្រាប់វាល autoincremental ដំបូងដើម្បីពិនិត្យមើលភាពអាចរកបាននៃកំណត់ត្រាសម្រាប់ពួកគេហើយបន្ទាប់មកដើម្បីធ្វើឱ្យទាន់សម័យពួកគេ។

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 km.unansea.com. Theme powered by WordPress.