【问题标题】:Try-Catch Error Message Foreign Key ConstraintTry-Catch 错误消息外键约束
【发布时间】:2014-11-04 18:22:54
【问题描述】:

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

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

我可以有自己的错误。类似的东西:

上不存在

 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

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

【问题讨论】:

    标签: sql error-handling triggers foreign-keys raiserror


    【解决方案1】:

    你可以在 try/catch 中添加插入语句,但我认为一开始你需要 INSTEAD OF INSERT 触发器。

    【讨论】:

      猜你喜欢
      • 2011-06-12
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多