Fitsidihana an-tsokosoko mankany amin'ny fampiasana TRY ... FITOKONANA hanodinana ny fahadisoana SQL Server

Ampahafantaro ny fahadisoana tsy manelingelina ny famonoana

Ny TRY ... fanambarana CATCH ao amin'ny Transact- SQL dia mamantatra sy mandrindra ny fepetra diso ao amin'ny fampiharana databaranao. Ity fanambarana ity dia vato fehizoron'ny fandrakofana diso ny SQL Server ary ampahany manan-danja amin'ny fampivoarana rindrambaiko momba ny angona angona. TRY ... Miantefa amin'ny SQL Server ny CATCH manomboka amin'ny 2008, Azure SQL Database, Azure SQL Data Warehouse ary Parallel Data Warehouse.

Fampahafantarana TRY..KATOKA

TRY ... miasa ny CATCH amin'ny famelana anao hametraka fanambarana roa Transact-SQL: iray izay tianao "andramana" ary ny iray hafa ampiasaina mba "hisambotra" ny fahadisoana mety hitranga. Raha mahita ny fanambarana CATCH ny SQL Server, dia manatanteraka avy hatrany ny fanambarana ao amin'ny fehezanteny TRY. Raha toa ka tapaka tanteraka ny fanambarana TRY dia mandeha ihany ny SQL Server. Na izany aza, raha miteraka fahadisoana ny fanambarana TRY, ny SQL Server dia manatanteraka ny fanambarana CATCH mba handaminana amim-pahamendrehana ny hadisoana.

Ny antontan'isa fototra dia mitondra ity endrika ity:

MIARAHA ORY {sql_statement | statement_block} END BEGIN CATCH [{sql_statement | statement_block}] END CATCH [; ]

TRY ... Ohatra ARKA

Ny mora indrindra dia ny mahatakatra ny fampiasana ity fanambarana ity amin'ny fampiasana ohatra. Alao sary an-tsaina hoe ianao no mpandrindra ny tahirim-bolan'olombelona izay ahitana tabilao antsoina hoe "Employees," izay ahitana ny momba ny tsirairay amin'ireo mpiasa ao amin'ny fikambanana. Ity latabatra ity dia mampiasa laharana ID iray amin'ny laharana voalohany ho lohalaharana fototra . Azonao atao ny manandrana mampiasa ny fanambarana etsy ambany mba hampidirana mpiasa vaovao ao amin'ny daty misy anao:

MISAO OLANA amin'ny mpiasa (id, first_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201)

Ao anatin'ny toe-javatra mahazatra, ity fanambarana ity dia manampy ampahany amin'ny tabilan'ny mpiasa. Na izany aza, raha misy mpiasan'ny ID 12497 efa misy ao anaty daty, ny fampidirana ny laharana dia manitsakitsaka ny fepetra manan-danja indrindra ary mitarika ity hadisoana manaraka ity:

Msg 2627, Level 14, Fanjakana 1, Andalana 1 Fanitsakitsahana ny PRIMARY KEY fifanarahana 'PK_employee_id'. Tsy afaka mampiditra lohalaharana duplicate amin'ny zavatra 'dbo.employees'. Nambara ny fanambarana.

Na izany fahadisoana izany dia manome anao ny fampahalalana ilainao hanakorontanana ny olana, misy olana roa amin'izany. Voalohany, ny hafatra dia kriptika. Tafiditra ao anatin'izany ny mari-pamantarana diso, laharan-tserasera sy fampahalalana hafa tsy azon'ny mpampiasa. Faharoa, ary ny zava-dehibe kokoa, dia mahatonga ny fanambarana ho fongana ary mety hiteraka fampiharana.

Ny fomba hafa dia ny mameno ny fanambarana amin'ny TRY ... CATCH fanambarana, araka ny aseho etsy ambany:

MANDRAISA AMIN'IREO mpiara-miasa (id, first_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201) TSY MISY DINGANA MOMBA NY FIFIDIANANA 'Error:' + ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @ profile_name = 'Employee Mail', @recipients = 'hr@foo.com', @body = 'Nisy hadisoana tonga teo amin'ny famoronana asa vaovao vaovao.', @subject = 'Error Duplication Employee ID'; END CATCH

Amin'ity ohatra ity, ny fahadisoana rehetra mitranga dia voalaza ho mpampiasa ny baiko sy ny adiresy imailaka hr@foo.com. Ny fanehoan-kevitra nasehon'ilay mpampiasa dia hita eto ambany:

Fahadisoana: Fanitsakitsahana ny fifanarahana PRIMARY KEY 'PK_employee_id'. Tsy afaka mampiditra lohalaharana duplicate amin'ny zavatra 'dbo.employees'. Mail queued.

Ny tena zava-dehibe dia mitohy ihany ny famonoana fampiharana, ka mamela ny mpandahateny handamina amim-pahamendrehana ilay hadisoana. Ny fampiasana ny TRY ... Ny fanambarana CATCH dia fomba tena tsara hijerena sy handamina ny fahadisoana izay mitranga amin'ny fampiharana angona SQL Server.

Learn More

Raha te hianatra bebe kokoa momba ny Fiteny Enti-manorina ny Structured ianao dia vakio ny Introduction to SQL .