postgresql - 如何在 postgresql 中为更新添加默认值?
问题描述
我有一个布尔列,其中添加了默认值 false。据我了解,当我向表中添加新行时,默认值将生效。但是,当行也更新时,我希望默认值为 false。那可能吗?
例如:
ALTER TABLE mytable ALTER COLUMN mycolumn SET DEFAULT false;
-- In below query the mycolumn should default to false
update mytable set somecolumn = 'somevalue'
where somecolumn = 'anothervalue'
-- In below query mycolumn should be true since the value is specified
update mytable set somecolumn = 'somevalue' mycolumn = true
where somecolumn = 'anothervalue'
解决方案
您可以按如下方式创建触发器:
CREATE FUNCTION mytriggerfunction()
RETURNS TRIGGER AS '
BEGIN
IF NEW.mycolumn IS NULL OR NEW.mycolumn='''' THEN
NEW.mycolumn := ''somedefaultvalue'';
END IF;
RETURN NEW;
END' LANGUAGE 'plpgsql';
CREATE TRIGGER mytrigger
BEFORE UPDATE ON mytable
FOR EACH ROW
EXECUTE PROCEDURE mytriggerfunction();
推荐阅读
- javascript - 将字典传递给javascript函数错误
- sql - 基于 SQL 中的迭代增加每行的值
- python - Python中二维列表的二进制搜索和返回列表
- python - 如何根据另一个csv文件中的关键字提取csv文件中的句子并将其从主文件中删除
- python - 没有隐藏层和线性激活函数的神经网络应该近似线性回归?
- javascript - ajaxStop 有时在 ajaxStart 之后没有触发
- javascript - 为按钮添加启动和重置功能
- python - 使用 python 压缩文件
- c++ - 将所有 URL 组织在一个类中的一个位置
- javascript - 三元条件下的多个 OR 运算符,