1
對於這個表T-SQL錯誤嚴重性會影響腳本是否繼續執行下一條語句?
CREATE TABLE [dbo].[Table_2](
[X] [int] IDENTITY(1,1) NOT NULL,
[Y] [varchar](30) NULL,
CONSTRAINT [PK_Table_2] PRIMARY KEY CLUSTERED
(
[X] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
當我運行對搶先表下面的代碼,第一次插入成功,但因爲代碼試圖插入的標識列的重複值,第二個將失敗。
BEGIN
SET IDENTITY_INSERT Table_2 ON
PRINT 'Insert 1'
INSERT INTO Table_2
(X, Y)
VALUES (3, CAST(getdate() AS varchar(30)))
PRINT 'Insert 2'
INSERT INTO Table_2
(X, Y)
VALUES (3, CAST(getdate() AS varchar(30)))
PRINT 'Insert 3'
INSERT INTO Table_2
(X, Y)
VALUES (4, CAST(getdate() AS varchar(30)))
SET IDENTITY_INSERT Table_2 OFF
END
輸出:
Insert 1
(1 row(s) affected)
Insert 2
Msg 2627, Level 14, State 1, Line 13
Violation of PRIMARY KEY constraint 'PK_Table_2'. Cannot insert duplicate key in object 'dbo.Table_2'.
Insert 3
(1 row(s) affected)
而不是在那裏遇到了錯誤的位置腳本一流的執行,繼續執行下一個插入語句,該語句成功。
我意識到,我可以用一個try catch塊時,會發生,但我的問題是捕獲錯誤:
我注意到錯誤的嚴重性是14.我認爲足夠嚴重的錯誤級別會導致執行中止。你能告訴我,如果這是corerct和什麼最低嚴重程度需要導致腳本中止?
[沒有這麼簡單(http://www.sommarskog.se/error-handling-I.html#whathappens) – 2013-02-18 17:15:26
20的最低嚴重會導致您的客戶端連接終止,以及停止當時的劇本。如果您想在某個時候結束腳本,則使用SQLCMD功能會更加輕鬆。 – muhmud 2013-02-18 17:17:55