AFTER INSERT
AS
BEGIN
DECLARE
@p_newColorCode int
SET NOCOUNT ON;
SELECT @p_newColorCode = i.COLOR_CODE,
@p_newStateCode = i.STATE,
FROM inserted I
BEGIN TRANSACTION
IF @p_newColorCode IS NOT NULL
BEGIN
INSERT INTO CALL_HISTORY(CALL_HISTORY_REC_NO,CHANGE_PERSON,CHANGE_DATE,CHANGE_TYPE,CHANGE)
VALUES(@p_call_hist_rec_no,22,GETDATE(),@p_newPlateNo +': ADDED COLOR', dbo.fn_GetCodeDesc(@p_newColorCode))
END
由于某些原因,当@p_newColorCode为NULL时,它仍然进入IF。我还需要做些什么才能做到这一点?如何检查sql触发器中的变量是否为空SQL Server 2008
感谢您的帮助提前。
SQL Server 2008 stnd。
谢谢你的建议,是的,通常我不会这样做,但在这种情况下,程序不能一次插入或更新一个以上的记录,所以没关系,但我同意你通常不会做这件事很好。就性能而言,不会有必要为每个字段做一个选择。因为为了简单起见,我只提一个,但可能有40个字段需要检查。再次感谢您的建议。 –
数据库被应用程序以外的机制插入。你永远不能认为只有一条记录会被插入。 – HLGEM