我正在编写一个存储过程,我使用 try catch 块。
现在我在表中有一个独特的列。当我尝试插入重复值时,它会抛出异常,异常号为 2627。
我希望这样做
if (exists(select * from tblABC where col1='value')=true) raiseError(2627)--如果我使用插入查询插入重复值,则会引发系统错误
编辑:
我正在使用在处理异常时回滚的事务,因此导致在先前的查询中执行的 @@Identity 值增加 b4 发生异常。
我想检查实际插入时可能发生的所有此类异常。为此,我将使用 select 语句手动检查可能引发错误的异常if else
。在这里,我将能够捕获唯一键违规,但不会发生异常,所以我将在这里故意抛出异常,但我想要的异常应该是系统异常,即错误 2627
哪种方法会更好,使用插入查询或在使用 Select 查询插入之前检查重复值?
是否有可能在手动捕获异常时引发系统异常,即抛出与 SQL 会抛出的相同异常