
Сервер FB2.1 17735 dialect 3
Мне надо определять изменения в поле
TRIGGER AFTER UPDATE
Кроме как
Код: Выделить всё
IF(OLD.VAL = NEW.VALE OR (OLD.VAL IS NULL AND NEW.VAL IS NULL)) THEN BEGIN /*Not changed*/ END
ELSE
-- changed do some actions
И почему не работает такай вариант
Код: Выделить всё
IF(NOT(OLD.VAL = NEW.VALE OR (OLD.VAL IS NULL AND NEW.VAL IS NULL))) THEN some actions
Код: Выделить всё
CREATE OR ALTER PROCEDURE SP_TEST_COMPARE (
V1 INTEGER,
V2 INTEGER)
RETURNS (
RV1 INTEGER,
RV2 INTEGER,
RES VARCHAR(16))
AS
begin
RV1 = V1;
RV2 = V2;
/*
Вариант 1
if( v1 = v2 OR (V1 IS NULL AND V2 IS NULL) )THEN res = 'equal';
else
res = 'not equal';
suspend;
*/
--Вариант 2
if( not(v1 = v2 OR (V1 IS NULL AND V2 IS NULL)) )THEN res = 'not equal';
else
res = 'equal';
suspend;
end
Код: Выделить всё
Входные данные Вар 1 Вар 2
NULL ,NULL equal equal
1 ,NULL not equal equal ????
NULL ,1 not equal equal ????
2 ,1 not equal not equal
2 ,2 equal equal