我想确保列的值只能以定义的方式更改。示例是包含只能根据定义的状态转换更改的状态值的列,或者可以将 NULL
设置为仅一次的列。
我想避免在应用层实现这些检查。
我找不到使用常规约束的解决方案。是否有另一种方法可以实现该目标,或者数据库层是否有意不支持此类约束?
最佳答案
约束只能根据行的当前值执行规则(检查约束)
- 或不同表中相关行的当前状态之间的参照完整性(外键约束)
- 或在有限范围内对表中所有行的当前值(排除约束)。
您想在先前 状态和当前 状态之间实现约束。这通常用 trigger 实现.
示例:
SO 上有许多示例。 Try a search.
关于sql - 如何在Postgres中实现列值变化约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25038478/