កំណត់អត្តសញ្ញាណកំហុសដោយគ្មានការកាត់ទោស
សេចក្តីថ្លែងការណ៍ TRY ... CATCH នៅក្នុង Transact- SQL បាន រកឃើញនិងដោះស្រាយលក្ខខណ្ឌកំហុសនៅក្នុងកម្មវិធីមូលដ្ឋានទិន្នន័យរបស់អ្នក។ សេចក្តីថ្លែងការណ៍នេះគឺជាមូលដ្ឋានគ្រឹះនៃការគ្រប់គ្រងកំហុស SQL Server និងជាផ្នែកមួយដ៏សំខាន់នៃការអភិវឌ្ឍកម្មវិធីមូលដ្ឋានទិន្នន័យដ៏រឹងមាំ។ TRY ... CATCH អនុវត្តទៅម៉ាស៊ីនបម្រើ SQL ដែលចាប់ផ្តើមជាមួយ 2008, Azure មូលដ្ឋានទិន្នន័យ SQL, ឃ្លាំងទិន្នន័យ SQL Azure និងឃ្លាំងទិន្នន័យប៉ារ៉ាឡែល។
ការណែនាំ TRY..CATCH
TRY ... CATCH ដំណើរការដោយអនុញ្ញាតឱ្យអ្នកបញ្ជាក់ពីសេចក្តីថ្លែងការណ៍ Transact-SQL ពីរ: មួយដែលអ្នកចង់សាកល្បងនិងមួយទៀតប្រើដើម្បី "ចាប់" កំហុសដែលអាចកើតឡើង។ នៅពេលដែលម៉ាស៊ីនបម្រើ SQL ជួបប្រទះ TRY ... CATCH វាភ្លាមប្រតិបត្តិសេចក្តីថ្លែងការណ៍រួមបញ្ចូលក្នុងឃ្លា TRY ។ ប្រសិនបើសេចក្តីថ្លែងការណ៍ TRY ប្រតិបត្តិដោយជោគជ័យ, ម៉ាស៊ីនបម្រើ SQL គ្រាន់តែផ្លាស់ទីនៅលើ។ ទោះជាយ៉ាងណាក៏ដោយប្រសិនបើសេចក្តីថ្លែងការណ៍ TRY បង្កើតកំហុសមួយ SQL Server ប្រតិបត្តិសេចក្តីថ្លែងការណ៍ CATCH ដើម្បីដោះស្រាយដោយភាពត្រឹមត្រូវកំហុស។
វាក្យសម្ព័ន្ធជាមូលដ្ឋានយកសំណុំបែបបទនេះ:
BEGIN TRY {sql_statement | statement_block} បញ្ចប់ការព្យាយាមចាប់ផ្តើម [{sql_statement | statement_block}] END CATCH [; ]សាកល្បង ... ឧទាហរណ៏
វាងាយស្រួលបំផុតដើម្បីយល់ពីការប្រើប្រាស់សេចក្តីថ្លែងការណ៍នេះតាមរយៈការប្រើប្រាស់ឧទាហរណ៍។ ស្រមៃថាអ្នកគឺជាអ្នកគ្រប់គ្រងនៃមូលដ្ឋានទិន្នន័យធនធានមនុស្សដែលមានតារាងឈ្មោះ "និយោជិក" ដែលមានព័ត៌មានអំពីបុគ្គលិកម្នាក់ៗនៅក្នុងអង្គភាពរបស់អ្នក។ តារាងនោះប្រើលេខសម្គាល់បុគ្គលិកចំនួនគត់ជា កូនសោសំខាន់ ។ អ្នកអាចព្យាយាមប្រើសេចក្តីថ្លែងការណ៍ខាងក្រោមដើម្បីបញ្ចូលនិយោជិកថ្មីនៅក្នុងមូលដ្ឋានទិន្នន័យរបស់អ្នក:
និយោជិត INSERT INTO (id, first_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201)ក្រោមកាលៈទេសៈធម្មតាសេចក្តីថ្លែងការណ៍នេះនឹងបន្ថែមជួរដេកមួយទៅតារាងនិយោជិក។ ទោះយ៉ាងណាក៏ដោយប្រសិនបើនិយោជិតដែលមានលេខសម្គាល់ 12497 មាននៅក្នុងមូលដ្ឋានទិន្នន័យរួចហើយការបញ្ចូលជួរដេកនឹងបំពានលើឧបសគ្គចម្បងហើយបណ្តាលឱ្យមានកំហុសដូចខាងក្រោម:
Msg 2627, កំរិត 14, State 1, បន្ទាត់ទី 1 ការរំលោភបំពាននៃឧបសគ្គ PRIMARY KEY 'PK_employee_id' ។ មិនអាចបញ្ចូលកូនសោចម្លងក្នុងវត្ថុ 'dbo.employees' ទេ។ សេចក្តីថ្លែងការណ៍ត្រូវបានបញ្ចប់។ ខណៈពេលដែលកំហុសនេះផ្តល់ឱ្យអ្នកនូវព័ត៌មានដែលអ្នកត្រូវការដោះស្រាយបញ្ហាបញ្ហាមានបញ្ហាពីរជាមួយវា។ ទីមួយសារគឺមិនច្បាស់លាស់។ វារួមបញ្ចូលកូដកំហុសលេខបន្ទាត់និងព័ត៌មានផ្សេងទៀតដែលមិនអាចយល់បានចំពោះអ្នកប្រើប្រាស់មធ្យម។ ទីពីរហើយសំខាន់ជាងនេះវាបណ្តាលអោយសេចក្តីថ្លែងការណ៍បញ្ឈប់ហើយអាចបណ្តាលឱ្យកម្មវិធីមួយគាំង។
ជម្រើសគឺដើម្បីរុំសេចក្តីថ្លែងការណ៍នៅក្នុងសេចក្តីថ្លែងការណ៍ TRY ... CATCH ដូចបានបង្ហាញខាងក្រោម:
ក្នុងឧទាហរណ៍នេះកំហុសណាមួយដែលកើតឡើងត្រូវបានរាយការណ៍ទៅអ្នកប្រើដែលប្រតិបត្តិពាក្យបញ្ជានិងអាសយដ្ឋានអ៊ីមែល hr@foo.com ។ កំហុសដែលបង្ហាញដល់អ្នកប្រើប្រាស់លេចឡើងខាងក្រោម:
កំហុស: ការរំលោភបំពានលើឧបសគ្គ PRIMARY KEY 'PK_employee_id' ។ មិនអាចបញ្ចូលកូនសោចម្លងក្នុងវត្ថុ 'dbo.employees' ទេ។ សំបុត្របានដាក់ជាជួរ។អ្វីដែលសំខាន់បំផុតគឺការអនុវត្តកម្មវិធីនៅតែបន្តជាធម្មតាអនុញ្ញាតឱ្យអ្នកសរសេរកម្មវិធីដោះស្រាយកំហុសដោយប្រើក្រមសីលធម៌។ ការប្រើប្រាស់សេចក្តីថ្លែងការណ៍ TRY ... CATCH គឺជាវិធីឆើតឆាយដើម្បីរកឱ្យឃើញនិងចាត់វិធានការជាមុននូវកំហុសដែលកើតឡើងនៅក្នុងកម្មវិធីមូលដ្ឋានទិន្នន័យ SQL Server ។
រៀនបន្ថែមទៀត
ប្រសិនបើអ្នកចង់ស្វែងយល់បន្ថែមអំពីភាសាសំណួររចនាសម្ព័ន្ធសូមអាន សេចក្តីផ្តើមទៅ SQL ។