sql - 引发异常以禁止更新 PostgreSQL 中的列
问题描述
我有包含以下列的照片表:姓名、作者、创建日期、更新日期。
我想设置一个条件,每次用户尝试更新列 Created_Date 时,系统不允许他更新它并显示以下消息:“无法更新列 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
推荐阅读
- php - 您可以手动将列添加到 laravel postgre 数据库吗
- ajax - What are the possible ajax events for a primefaces InputText?
- html - 网页抓取覆盖框
- asp.net - 哪个用户在aspx文件所在的服务器上运行cmd
- c# - C# DataAnnotations 正则表达式不正确匹配
- java - NDK 解析结果:项目设置:Gradle 模型版本=5.1.1,NDK 版本为 UNKNOWN
- html - 在具有不同数字的新 div 上应用 css 类
- c# - 在运行时访问对象数组 - System.NullReferenceException
- java - 黄瓜 AmbiguousStepDefinitionsException
- html - 我的代码中有可在 FF 中使用但在 Chrome 中不可用的锚点