postgresql - Postgresql 触发器函数
问题描述
我有一个更新查询,
UPDATE tableA SET column1 = $1 WHERE id = $2 AND date < $3
日期为空,尚未设置。我也有触发器
BEFORE UPDATE OF column1 ON tableA FOR EACH ROW EXECUTE FUNCTION functionA()
我的问题是,即使 WHERE 子句中的日期为空,触发器是否会在更新查询之前运行?如果不是,即使日期为空并在函数A 中设置日期,如何让触发器在更新查询之前运行?
解决方案
当日期为空时,您的触发器不会触发。当日期为 NULL 时,条件 "date < $3" 的计算结果为 NULL。“AND”要求两个条件都返回 TRUE,因为 NULL 不是 TRUE,所以不会影响任何行,因为 @GMB 表示触发器不会触发。如果您的触发函数将设置日期列,那么您可能想要:
update tablea
set column1 = $1
where id = $2
and (date < $3 or date is null) ;
推荐阅读
- javascript - 如何使用 jQuery 重置或取消选择多选框?
- mysql - 为什么 MariaDB 不接受我的字符串变量作为我的 sql 查询中的表名?
- bootstrapper - 升级时如何防止 WiX 自定义引导程序卸载丢失的软件包
- entity-framework-6 - 首先使用 db 和 postgres 动态更改实体框架中某些表的架构
- php - 带有列过滤的 jQuery + PHP 数据表服务器端处理
- amazon-s3 - 如何使用 Apache NiFi putS3Object 在 AWS S3 中创建目录
- android - 以编程方式展开/折叠 CoordinatorLayout 中的底部导航视图
- html - 如何将输入值与 JSON 数据匹配
- android - TextView 中的电话号码变为下划线但不可点击
- javascript - 在 for 循环内循环 - 嵌套数组