在我的数据库中,我的记录如下:
Start_date | Product_code
2009-01-01 | 1
2010-01-01 | 1
...
...
我想将 start_date 更新为 start_date + 1。
但我有 (Start_date, product_code) 作为我的主键。
如果我执行我的查询
update products set start_date = start_date + '1 year'::interval ;
这将返回一个错误,指出另一个条目已经存在(因为 2010-01-01, 1 已经是表中的一个条目)。
基本上,我需要在按 start_date 对条目进行降序排序后进行更新。
我可以通过创建另一个具有相同架构的表,以排序方式将所有条目复制到临时表,截断原始表,然后在添加 start_date 后填充该表中的条目来做到这一点。
有没有其他有效的方法来做到这一点?