Comharraich mearachdan gun a bhith a 'cur bacadh air gnìomh
An TRY ... Aithris CATCH ann an Transact- SQL a ' lorg agus a' làimhseachadh mearachd sna tagraidhean stòr-dàta agad. Is e an aithris seo clach-oisinn làimhseachadh mearachd an t-Seirbheis SQL agus tha e na phàirt chudromach de bhith a 'leasachadh iarrtasan stòr-dàta làidir. TRY ... Tha CATCH a 'buntainn ri Freiceadan SQL a' tòiseachadh le 2008, Azure Database SQL, Azure Data Warehouse agus Co-shìnte Dàta Warehouse.
A 'toirt a-steach TRY..CATCH
TRY ... Bidh CATCH ag obair le bhith a 'leigeil leat dà aithris Transact-SQL a shònrachadh: fear a tha thu airson "feuchainn" agus fear eile a chleachdas gus mearachdan sam bith a dh'fhaodadh èirigh. Nuair a choinnicheas SQL Freiceadan SQL ... aithris CATCH, bidh e a 'ruith a-mach sa bhad an aithris a tha air a ghabhail a-steach ann an clàs TRY. Ma shoirbhicheas leis an aithris TRY gu soirbheachail, tha am frithealaiche SQL dìreach a 'gluasad air adhart. Ge-tà, ma tha an aithris TRY a 'dèanamh mearachd, bidh frithealaiche SQL a' cur a-mach aithris CATCH gus an mearachd a làimhseachadh gu grinn.
Tha an co-chòrdadh bunaiteach a 'gabhail ris an fhoirm seo:
BEGIN TRY {sql_statement | statement_block} DEALBH-SGRÌOBH AN SEO [{sql_statement | statement_block}] END CATCH [; ]TRY ... CATCH eisimpleir
Tha e nas fhasa tuigsinn an cleachdadh seo le bhith a 'cleachdadh eisimpleir. Smaoinich gur e rianaire stòr-dàta stòrasan daonna a th 'ann a tha a' toirt a-steach clàr ainmichte "Luchd-obrach," anns a bheil fiosrachadh mu gach neach-obrach anns a 'bhuidhinn agad. Tha an clàr sin a 'cleachdadh àireamh ID àireamh-obrach sìor-fhillte mar phrìomh iuchair . Dh'fhaodadh tu feuchainn ris an aithris gu h-ìosal a chleachdadh gus neach-obrach ùr a chur a-steach don stòr-dàta agad:
INSERT INTO luchd-obrach (id, first_name, lastname, extension) VALUES (12497, 'Mike', 'Chapple', 4201)Fo shuidheachaidhean àbhaisteach, bhiodh an aithris seo a 'cur sreath ris a' chlàr Luchd-obrach. Ge-tà, ma tha neach-obrach le ID 12497 ann mar-thà anns an stòr-dàta, cuiridh an sreath a-steach a 'bhriseadh prìomh shrian agus mar thoradh air a' mhearachd a leanas:
Msg 2627, Ìre 14, Stàite 1, Loidhne 1 A 'cur casg air bacadh PRÌOMH PRÌOMH' PK_employee_id '. Chan urrainn dhut iuchair dhùblach a chur a-steach ann an 'dbo.employees' an nì. Tha an aithris air a chrìochnachadh. Ged a tha am mearachd seo a 'toirt dhut an fhiosrachadh a dh' fheumas tu gus duilgheadas a chuir air adhart, tha dà chùis ann. An toiseach, tha an teachdaireachd gu math duilich. Tha e a 'toirt a-steach còdan mearachd, àireamhan loidhne agus fiosrachadh eile nach gabh a thuigsinn don neach-cleachdaidh cuibheasach. An dara àite, agus nas cudromaiche, tha e ag adhbharachadh gun tèid an aithris a chuir às do dhroch bhriseadh agus gum faodadh e adhbhrachadh gu bheil tagradh ann.
Is e an roghainn an aithris a thionndadh ann an TRY ... Aithris CATCH, mar a chithear gu h-ìosal:
San eisimpleir seo, tha mearachdan sam bith a tha a 'tachairt air an aithris don neach-cleachdaidh a' toirt seachad an àithne agus an seòladh post-dealain hr@foo.com. Tha an mearachd a sheallas an neach-cleachdaidh gu h-ìosal
Mearachd: Cuingealachadh a thaobh briseadh PRÌOMH PRÌOMH 'PK_employee_id'. Chan urrainn dhut iuchair dhùblach a chur a-steach ann an 'dbo.employees' an nì. Mail air a dhol.Nas cudromaiche buileach, mar as trice a 'cur an gnìomh tagradh a' dol mar as trice, a 'leigeil leis a' phrògramadair dèiligeadh ris an mhearachd gu grinn. Cleachdadh an TRY ... Is e dòigh eireachdail a th 'ann an aithris CATCH gus mearachdan a lorg ann an tagraidhean Stòr-dàta SQL a lorg agus a làimhseachadh.
Barrachd Ionnsachaidh
Ma tha thu airson barrachd ionnsachadh mu dheidhinn Ceist Structured Language, leugh Ro-ràdh gu SQL .