0
我需要設置一個約束,該行將不會更新,一旦該行中的特定列用非空數據更新。Postgres - 一旦列中的行不爲空,如何停止行的更新
我需要設置一個約束,該行將不會更新,一旦該行中的特定列用非空數據更新。Postgres - 一旦列中的行不爲空,如何停止行的更新
使用在UPDATE WHERE子句
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE column1 is not NULL;
你會放一個觸發,如果已填充列返回NULL,或新的對象,如果事實並非如此。
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();