Postgres:是否可以锁定一些行进行更改?

时间:2016-08-30 22:58:31

标签: postgresql

我有很老的桌子,为客户提供记录。付款和佣金数年。在常规商业周期中,有时需要重新计算佣金和更新表格。但通常会在1或2个月后重新开始,而不是更多。

最近,由于PHP脚本中的错误导致我们的开发人员重新计算了自0_0开始以来的佣金。并且重新计算的过程非常复杂,所以它无法恢复只是抓住了yeasterday的备份 - 数据库中的数据更改,因此恢复数据真的很复杂且非常昂贵的程序。客户的抱怨和会计的变化......你知道.Horor。

我们无法按期间拆分表格。 (我们可以,但重新制作所有数据选择需要一年的时间)。

我想要考虑的是设置一些更新触发器来检查更改记录的日期和allowed日期应该小于更新日期。因此,如果出现错误或错误,有人会尝试更新此类“限制”错误。它会得到一个异常并保持数据不变。

这是一个好方法吗?如何做到 - 我的意思是触发?

1 个答案:

答案 0 :(得分:1)

对于postgres,您可以使用check约束来确保allowed_date始终小于update_date:

ALTER TABLE mytable ADD CONSTRAINT datecheck CHECK (allowed_date < update_date);