Я пытаюсь создать триггер, который при обновлении столбца таблицы SAMPLE использует оператор case для обновления столбца в другой таблице. В настоящее время триггер не перехватывает ни одно из предложений WHEN
. Значение в предложении ELSE
- это то, что используется для обновления.
CREATE TRIGGER dbo.SAMPVAL
ON dbo.SAMPLE
FOR UPDATE
AS
BEGIN
UPDATE U
SET U.VALIDATED = CASE
WHEN (U.VALIDATED IS NULL AND LEN(INSERTED.VALUSER) > 0)
THEN 'VAL1'
WHEN (LEN(U.VALIDATED) > 0 AND U.VALIDATED = 'VAL1')
THEN 'VAL2'
WHEN (LEN(U.VALIDATED) = 0)
THEN 'NEWERVAL'
WHEN (LEN(U.VALIDATED) > 0)
THEN 'NEWERVAL1'
ELSE '-'
END
FROM INSERTED
INNER JOIN SUSERFLDS U ON U.SAMPNO = INSERTED.SAMPNO
END;
Если поле U.VALIDATED
пусто и длина столбца SAMPLE.VALUSER
больше нуля, то SUSERFLDS.VALIDATED = 'VAL1'
. Когда я проверяю это, столбец SUSERFLDS.VALIDATED
обновляется до "-".