所以我最近開始在大學的SQL Server中進行事務和錯誤處理,並且遇到了這個問題,我的老師一直無法解釋。當我嘗試並執行此塊:嘗試在SQL Server中捕獲?
Begin Transaction TRA
Begin Try
Alter Table history
Add Primary Key (employee_id,date_beg)
End Try
Begin catch
If @@trancount>0
Select ERROR_NUMBER() Error, ERROR_MESSAGE() Mensaje
End Catch
Commit
我收到以下錯誤信息:
消息8111,級別16,狀態1,2號線
無法定義的空列PRIMARY KEY約束在表'歷史'。Msg 1750,Level 16,State 0,Line 2
無法創建約束。查看以前的錯誤。
所以它看起來代碼沒有捕獲錯誤,因爲它應該。
如果你能幫助我,我會非常感激!
你看過Try ... Catch上的任何文檔嗎? [此MSDN頁面](https://msdn.microsoft.com/en-GB/library/ms175976.aspx)指出並非所有錯誤都被捕獲... – ChipsLetten
@ChipLetten。 。 。這是一個16級錯誤,它是運行時,而不是編譯時。所以,它似乎應該被抓住。 –