如何解决postgresql 触发器函数添加 if 语句,将旧列值与更新时的默认值进行比较
我想在 sql 中创建一个触发器函数,如果列值不等于“default_id”,它将阻止更新表中的列。例如,如果我更新 some_id
等于“default_id”的行,它会成功。但是,如果我更新具有不等于“default_id”的值的行 some_id
列,则会引发异常。
CREATE FUNCTION not_allow_update_column_some_id() RETURNS trigger
LANGUAGE plpgsql AS
$$BEGIN
IF NEW.some_id <> OLD.some_id AND OLD.some_id <> "default_id" THEN
RAISE EXCEPTION 'some_id is not allowed to be updated unless it was equal to default value';
END IF;
RETURN NEW;
END;$$;
CREATE TRIGGER not_allow_update_column_some_id
BEFORE UPDATE ON some_table FOR EACH ROW
EXECUTE PROCEDURE not_allow_update_column_some_id();
上面的代码似乎不起作用,因为比较似乎认为“default_id”是一列而不是值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。