我需要设置一个约束,一旦使用非空数据更新该行中的特定列,就会阻止更新行。
答案 0 :(得分:0)
在UPDATE中使用WHERE子句
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE column1 is not NULL;
答案 1 :(得分:0)
你会设置一个触发器,如果列已经填充则返回NULL,如果不是则返回NEW对象。
CREATE OR REPLACE FUNCTION public.safeguard_tg_fn() RETURNS trigger AS
$BODY$BEGIN
--If the column was not set, allow updating the entire row
IF OLD.myimportantcol ISNULL THEN
RETURN NEW;
ELSE
--Else, the column is already populated, cancel the entire update (for this row only)
RETURN NULL;
END IF;
END;$BODY$ LANGUAGE plpgsql;
CREATE TRIGGER safeguard_tg BEFORE UPDATE
ON public.mytable FOR EACH ROW
EXECUTE PROCEDURE public.safeguard_tg_fn();