我有一个存储过程,在表中创build一个entery。
INSERT INTO tbl_CaseDetails ( Case_Id , Client_Id , Client_HO_Id , Client_Case_Ref , Client_Cust_Ref , Access_Id , Product_Id , Status ) Values( @CaseId , @Client_Id , isnull(@Head_Office_Id,@Client_Id) , @Client_Case_Reference , @Client_Customer_Reference , @Access_Id , @Product_Id , 'pre-instr')
但在触发器中,状态显示为空,插入失败,因为我有一个空状态的检查。
If Update(Status) Begin If @Status Is Null Exec [usp_CaseWithNullStatus] @Case_Id Begin RaisError ( 'Cannot insert null status' ,16 ,16 ) End End
任何想法为什么发生这种情况? SP
不应该这样设置你的内部开始/结束块:
If Update(Status) Begin If @Status Is Null Begin -- <---------- block starts here Exec [usp_CaseWithNullStatus] @Case_Id RaisError ( 'Cannot insert null status' ,16 ,16 ) End End
在你的代码中,raiserror 总是被调用,因为if语句后面的行被认为是执行块,即使if语句不是真的,下一行也会被调用。