【问题标题】:Raise exception to forbid an update on column in PostgreSQL引发异常以禁止更新 PostgreSQL 中的列
【发布时间】:2019-12-06 09:52:56
【问题描述】:

我有一张照片表,其中包含以下列:姓名、作者、创建日期、更新日期。

我想设置一个条件,每次用户尝试更新列 Created_Date 时,系统不允许他更新它并显示以下消息: “无法更新 created_date 列”。

我想用句子Raise Exception

我应该如何处理这个?

【问题讨论】:

  • GRANT 在专栏上?
  • 您好,很遗憾,使用授权不是解决问题的方法。我想使用“引发异常”

标签: sql postgresql database-trigger


【解决方案1】:

您可以创建一个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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多