我有两个表和一个简单的存储过程。我想使用存储过程插入到table1中,其中一个参数是主键。
这是我遇到麻烦的地方:
我想拥有它,以便如果用户输入存储过程的parm / primary键已经在表上,那么它会将字段写入第二个表以及错误描述。
如何捕获/输出此错误信息?
存储过程(没有错误记录):
CREATE PROCEDURE procedure1
@Primary INT,
@Info NVARCHAR
AS
BEGIN
SET NOCOUNT ON
INSERT INTO Table1
(
Primary ,
Info
)
VALUES
(
@Primary ,
@Info
)
END
由于
答案 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
所有你需要做的就是简单检查第一个表中是否已经存在记录,如果它只是插入它并抛出错误。