0

我正在尝试编写一个查询而不是错误:

INSERT 语句与 FOREIGN KEY 约束冲突...`

我可以有自己的错误。就像是:

<值> 在 <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

我该如何处理这个错误?谢谢你。

4

1 回答 1

0

您可以在 try/catch 中添加插入语句,但我认为首先您需要 INSTEAD OF INSERT 触发器。

于 2014-11-04T19:23:20.980 回答