2014-11-04 38 views
0

我想編寫一個查詢的,與其錯誤:的try-catch錯誤消息外鍵約束

INSERT statement conflicted with the FOREIGN KEY constraint...`

我可以有我自己的錯誤。喜歡的東西:

< Value > does not exist on < table_name >

TEST TABLE1:      TEST TABLE2 

Col1 PK tinyint     Col2 PK tinyint 
Col2 FK tinyint 

我作了如下觸發作爲測試:

CREATE TRIGGER [dbo].[CHECK_INSERT] 
FOR INSERT 
ON TABLE1 
AS 
BEGIN 
    DECLARE @loop AS TINYINT 
    DECLARE @col1 AS TINYINT 
    DECLARE @col2 AS TINYINT 
    SELECT @loop = MIN (col1) FROM INSERTED 
    SELECT @col1 = col1 FROM INSERTED WHERE col1 = @loop 
    SELECT @col2 = col2 FROM INSERTED WHERE col1 = @loop 

    IF NOT EXISTS (SELECT col2 FROM TABLE2 WHERE col2 = @col2) 
    AND ERROR_NUMBER() = 547 
    BEGIN 
      RAISERROR('%s does not exists on Table2', 16, 1, CAST(@col2 AS VARCHAR(3)) 
      ROLLBACK TRANSACTION 
    END 
END 

我該如何處理這個問題?謝謝。

回答

0

您可以在try/catch中添加插入語句,但我認爲首先您需要INSTEAD OF INSERT觸發器。