存储过程 - 将错误写入另一个表

时间:2015-08-27 17:12:28

标签: sql sql-server tsql stored-procedures

我有两个表和一个简单的存储过程。我想使用存储过程插入到table1中,其中一个参数是主键。

这是我遇到麻烦的地方:

我想拥有它,以便如果用户输入存储过程的parm / primary键已经在表上,那么它会将字段写入第二个表以及错误描述。

如何捕获/输出此错误信息?

存储过程(没有错误记录):

CREATE PROCEDURE procedure1
   @Primary                        INT, 
   @Info                   NVARCHAR                   
AS 
BEGIN 
SET NOCOUNT ON 

 INSERT INTO Table1
      ( 
        Primary                  ,
        Info                   
      ) 
 VALUES 
      ( 
        @Primary                    ,
        @Info                   
      ) 

END 

由于

1 个答案:

答案 0 :(得分:1)

CREATE PROCEDURE dbo.InsertSomething
(
    @PrimaryKey INT
    , @Info NVARCHAR(MAX)
)
AS
BEGIN
    IF EXISTS (SELECT 1 FROM dbo.Table1 WHERE ID = @PrimaryKey)
    BEGIN
        INSERT INTO dbo.Table2 (ID, Info)
        VALUES (@PrimaryKey, @Info);

        RAISERROR (15600,-1,-1, 'Your custom message');
    END
    ELSE
    BEGIN
        INSERT INTO dbo.Table1 (ID, Info)
        VALUES (@PrimaryKey, @Info);
    END
END

所有你需要做的就是简单检查第一个表中是否已经存在记录,如果它只是插入它并抛出错误。