Estou tentando criar um gatilho que impeça que uma coluna seja atualizada da seguinte forma:
Se o valor da coluna for "A", ele não poderá ser atualizado para "B" e se o valor da coluna for "B", ele não poderá ser atualizado para "A" .
CREATE OR REPLACE FUNCTION cancelled_order()
RETURNS trigger
LANGUAGE plpgsql
AS $function$BEGIN
IF OLD.status = 'Cancelled' THEN NEW.status != 'Accomplished';
END IF;
IF OLD.status = 'Accomplished' THEN NEW.status != 'Cancelled';
END IF;
RETURN NEW;
END;
$function$;
CREATE TRIGGER No_cancelled_acomplished
BEFORE UPDATE OF status
ON clinical.tb_orders
EXECUTE PROCEDURE cancelled_order();
O erro que sai é:
Sintaxis error: !=
Alguma ideia, por quê?
Com base no que você deseja realizar logicamente, não deve:
realmente dizer algo assim?
Minha sintaxe pode estar um pouco errada para o PostgreSQL, mas meu ponto é: esse não é o tipo de expressão lógica que você está procurando? (Você não deveria estar fazendo uma comparação booleana na
THEN
cláusula, que eu acho que é por isso que está louco com o!=
.)