我有一个运行insert语句的存储过程,它将一个值返回到数据表中。我必须事先使用数据表谢谢你:)
我的SQL存储过程
begin
Declare @postID int = 0
insert into reviews (customerID, title, review)
values (@cusomerID, @title, @review)
set @postID = SCOPE_IDENTITY()
end
返回值存储在数据表中我想检查插入是否成功。
我正在使用ajax jquery来执行调用存储过程的insert并返回一个值
方法叫
if (data.Rows[0]["post_ID "] != 0)
{
return "successful";
}
else{
return "failed";
}
在javascript中
if(result != "failed"){
run code
}
但即使插入失败,它也会返回成功。
任何帮助都会非常感谢你。
答案 0 :(得分:1)
SCOPE_IDENTITY()返回上次自动ID。在你的情况下,它会在失败的插入之前返回一个。
尝试类似
的内容BEGIN
DECARE @postID int = 0
INSERT INTO reviews (customerID, title, review) VALUES (@cusomerID, @title, @review)
IF @@ERROR <> 0
SET @postID = -1
ELSE
SET @postID = (select SCOPE_IDENTITY())
SELECT @postID
END
并且在您的代码中,如果ID == -1,您就知道它失败了。
或者,你可以
BEGIN
SET XACT_ABORT ON
DECARE @postID int = 0
INSERT INTO reviews (customerID, title, review) VALUES (@cusomerID, @title, @review)
SET @postID = (select SCOPE_IDENTITY())
SELECT @postID
END
并且在出现任何错误时代码中都会发生异常(事务也会回滚)。