【发布时间】:2013-01-16 20:34:57
【问题描述】:
是否可以使用检查约束(或其他一些技术)来防止在更新记录时设置与其先前值相矛盾的值。
一个例子是 NULL 时间戳,表示发生了一些事情,例如“file_exported”。一旦文件被导出并具有非 NULL 值,就不应再将其设置为 NULL。
另一个例子是命中计数器,其中整数只允许增加,但不能减少。
如果对我使用 postgresql 有帮助,但我希望看到适合任何 SQL 实现的解决方案
【问题讨论】:
-
到目前为止你有没有研究过什么?
-
最好为此使用触发器。检查当前值是否不为空,如果他们尝试将其设置为空,则抛出错误。不过,如果您需要历史更改日志,则必须自己构建..
-
您使用的是哪个 DBMS?甲骨文? PostgreSQL?
-
一个简单的行触发器
ON UPDATE,检查NEW和OLD值可以做你想做的事。 -
不,你不能有一个知道除了行本身之外的任何事情的约束。您可以基于行中的列设置约束,但不能在其他表中,也不能在过去。
标签: sql postgresql check-constraints