在触发器中如何才能抛出我想要的异常
各位老大:
我有写了一个出库记录同步更新库存数量的触发器,但是在触发器执行中产生约束错误时,它直接退出了,抛出的是约束的错误信息,而不是我想要的那个。
这个问题该如何解决?
CREATE TRIGGER trGoodsOut_I ON dbo.GoodsOutRec FOR INSERT AS
BEGIN
DECLARE
@maxcard int,
@numrows int,
@numnull int,
@errno int,
@errmsg varchar(255)
SELECT @numrows = @@rowcount
IF @numrows = 0
RETURN
UPDATE GoodsStore
SET
Amount = b.Amount - a.Amount,
LastModifier = a.Creator,
LastModifyDate = a.CreateDate
FROM
Inserted a INNER JOIN GoodsStore b ON a.GoodsStoreID = b.GoodsStoreID /*这里在库存数量小于0时会引发一个约束错误*/
IF @@ERROR <> 0
BEGIN
SELECT @errno = @@ERROR, @errmsg = '在新增出库记录时更新库存数量失败!'
GOTO error
END
RETURN
/* Errors handling */
ERROR:
RAISERROR @errno @errmsg --(@errmsg, 16, 1)
ROLLBACK TRANSACTION
END