Igbese Igbesẹ-Igbesẹ lati Ṣiṣe TRY ... CATCH lati Mu awọn aṣiṣe Asise SQL

Ṣe idanimọ awọn aṣiṣe lai ṣe idaniloju ipaniyan

Awọn TRY ... CATCH alaye ni Transact- SQL n ṣawari ati ki o n kapa awọn aṣiṣe ipo ninu awọn ohun elo database rẹ. Gbólóhùn yii ni igun ile-iṣẹ ti aṣiṣe aṣiṣe SQL Server ati pe o jẹ ẹya pataki ti awọn ohun elo ipilẹja ti o nyara sii. TRY ... CATCH ṣe pẹlu SQL Server ti o bere pẹlu 2008, Azure SQL Database, Azure SQL Company Factory ati Parallel Data ile ise.

Ṣiṣayẹwo TRY..CATCH

TRY ... CATCH ṣiṣẹ nipa fifun ọ lati ṣafihan awọn ọrọ Transact-SQL meji: ọkan ti o fẹ "gbiyanju" ati ẹlomiran lati lo "ṣaja" eyikeyi awọn aṣiṣe ti o le dide. Nigba ti awọn alabapade SQL Server kan TRY ... CATCH alaye, o ṣe lẹsẹkẹsẹ ọrọ ti o wa ninu ipin TRY. Ti alaye TRY naa ṣe ni ifijišẹ, Server SQL n gbe lori. Sibẹsibẹ, ti o ba jẹ pe TRY gbólóhùn ṣe aṣiṣe kan, Server SQL n ṣafihan ọrọ CATCH lati fi iṣere mu awọn aṣiṣe naa.

Ijẹrisi ipilẹ gba fọọmu yi:

BEGIN TRY {sql_statement | statement_block} TI ṢẸRẸRẸ FUN AWỌN ỌBA [{sql_statement | statement_block}} TITỌ END [; ]

ṢẸRẸRẸ ... NIPA Apeere

O rọrun lati ni oye nipa lilo alaye yii nipasẹ lilo apẹẹrẹ. Fojuinu pe o jẹ alabojuto ti ibi ipamọ data awọn eniyan ti o ni tabili kan ti a npè ni "Awọn oluṣe," ti o ni alaye nipa kọọkan ninu awọn oṣiṣẹ ninu ajọ rẹ. Ipele yii nlo nọmba ID nọmba kan bi bọtini akọkọ . O le gbiyanju lati lo ọrọ yii ni isalẹ lati fi iṣẹ-ṣiṣe tuntun sinu ibi ipamọ rẹ:

Fi sii sinu awọn abáni (id, orukọ akọkọ, last_name, extension) Awọn ohun elo (12497, 'Mike', 'Chapple', 4201)

Labẹ awọn ipo deede, gbolohun yii yoo fi ọjọ kan kun si tabili Awọn Abáni. Sibẹsibẹ, ti o ba jẹ pe oṣiṣẹ pẹlu ID 12497 tẹlẹ wa ninu apoti ipamọ data, fifi sii ẹjọ yoo jẹ ki idiwọ bọtini akọkọ ati ki o mu ki aṣiṣe wọnyi:

Msg 2627, Ipele 14, Ipinle 1, Laini 1 Idafin IWỌ NIPA TI idiwọn 'PK_employee_id'. Ko le fi bọtini ti o jẹ ami meji sinu ohun 'dbo.employees'. Oro naa ti pari.

Nigba ti aṣiṣe yi fun ọ ni alaye ti o nilo lati ṣoro iṣoro naa, awọn oran meji wa pẹlu rẹ. Akọkọ, ifiranṣẹ naa jẹ cryptic. O ni awọn koodu aṣiṣe, awọn nọmba laini ati alaye miiran ti ko ni oye si olumulo alabọde. Keji, ati pe o ṣe pataki julọ, o fa ki iwifun naa bajẹ ati o le fa ipalara ohun elo kan.

Yiyan ni lati fi ipari si ọrọ yii ni TRY ... CATCH alaye, bi a ṣe han ni isalẹ:

ṢẸRẸ FUN SI INU ỌMỌRẸ (id, orukọ akọkọ, last_name, extension) Awọn ohun elo (12497, 'Mike', 'Chapple', 4201) Ṣiṣe ipe TI WỌN AWỌN ỌRỌ 'Aṣiṣe:' + ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Mailing Employee', @recipients = 'hr@foo.com', @body = 'Aṣiṣe kan ṣẹlẹ lati ṣẹda igbasilẹ titun awọn agbanisiṣẹ.', @subject = 'Error Duplication Error Employee'; AWỌN NIPẸ

Ni apẹẹrẹ yi, awọn aṣiṣe ti o waye ni a sọ fun oluṣe ti n ṣe pipaṣẹ ati adiresi e-mail hr@foo.com. Aṣiṣe ti o han si olumulo han ni isalẹ:

Aṣiṣe: Ṣẹda IWỌ NIPA TI idiwọn 'PK_employee_id'. Ko le fi bọtini ti o jẹ ami meji sinu ohun 'dbo.employees'. Mail ti dina.

Ti o ṣe pataki julọ, ipaniyan ohun elo n tẹsiwaju deede, fifun oniṣẹ lati ṣe amọran ni aṣiṣe. Lilo ti TRY ... CATCH alaye jẹ ọna ti o yanilenu lati ṣawari lati ri ati mu awọn aṣiṣe ti o waye ni awọn ohun elo ipamọ SQL Server.

Ko eko sii

Ti o ba fẹ lati ni imọ siwaju sii nipa Ẹrọ Iyẹn Ti a Ṣeto, ka Ifihan si SQL .