引发异常以禁止更新 PostgreSQL 中的列
Raise exception to forbid an update on column in PostgreSQL
我有 table 张照片,其中包含以下列:姓名、作者、Created_Date、Updated_date。
我想设置一个条件,每次用户尝试更新列 Created_Date 时,系统不允许他更新它并显示以下消息:
"It is not possible to update the column created_date".
我想用句Raise Exception
我该如何处理?
您可以创建一个 trigger
来完成这项工作。
首先创建一个函数来检查日期是否已更改
CREATE OR REPLACE FUNCTION update_created_date() RETURNS trigger AS
$BODY$
BEGIN
IF NEW.created_date IS DISTINCT FROM OLD.created_date THEN
RAISE EXCEPTION 'Do not mess up with created_date';
ELSE
RETURN NEW;
END IF;
END;
$BODY$ LANGUAGE 'plpgsql';
并将其附加到触发器
CREATE TRIGGER check_update_created_date
BEFORE UPDATE ON photographies
FOR EACH ROW EXECUTE PROCEDURE update_created_date();
如果您尝试更新它,则会出现异常:
UPDATE photographies SET created_date = current_date;
FEHLER: Do not mess up with created_date
我有 table 张照片,其中包含以下列:姓名、作者、Created_Date、Updated_date。
我想设置一个条件,每次用户尝试更新列 Created_Date 时,系统不允许他更新它并显示以下消息: "It is not possible to update the column created_date".
我想用句Raise Exception
我该如何处理?
您可以创建一个 trigger
来完成这项工作。
首先创建一个函数来检查日期是否已更改
CREATE OR REPLACE FUNCTION update_created_date() RETURNS trigger AS
$BODY$
BEGIN
IF NEW.created_date IS DISTINCT FROM OLD.created_date THEN
RAISE EXCEPTION 'Do not mess up with created_date';
ELSE
RETURN NEW;
END IF;
END;
$BODY$ LANGUAGE 'plpgsql';
并将其附加到触发器
CREATE TRIGGER check_update_created_date
BEFORE UPDATE ON photographies
FOR EACH ROW EXECUTE PROCEDURE update_created_date();
如果您尝试更新它,则会出现异常:
UPDATE photographies SET created_date = current_date;
FEHLER: Do not mess up with created_date