44000: with_check_option_violation
PostgreSQL含义
通过以 WITH CHECK OPTION 定义的视图执行的 INSERT/UPDATE 被拒绝,因为结果行不再满足视图的 WHERE 条件。视图会阻止写入落在其自身过滤条件之外的行。
原因
可更新视图以 WITH CHECK OPTION 定义,而写入操作使行移出了视图的定义条件(例如视图过滤 status='active',却将某行设为 'inactive')。行级安全(RLS)策略中也可能触发类似的检查。
解决方法
确保写入的值满足视图的 WHERE 条件,或直接在基表而非视图上执行操作(如果权限允许)。如果业务规则允许行离开过滤范围,不带 WITH CHECK OPTION 重新定义视图。对于 RLS,检查策略的 WITH CHECK 表达式。