【发布时间】:2018-12-21 09:35:18
【问题描述】:
我有一个包含以下列的 postgres 表:id、文本、时间戳、差异 id 是自动生成的,文本是插入的,timestamp 是默认的,diff 应该是当前记录的时间戳和上一个记录的时间戳的差(prev by id)如果上一个与实际是同一天,如果不是,应该是0. 所以所有的列都是在插入文本时自动生成的。 您知道通过表达式等使此差异默认的方法吗?我是 sql 新手。
谢谢。
【问题讨论】:
-
DEFAULT在这里没有用,因为它不能包含子查询。您可以使用ON INSERT触发器填充该值。 -
默认表达式无法访问其他行。您必须为此编写触发器。但是为什么要生成 ans 来保持该值呢?以后可以随时计算。坚持它会带来不一致的风险。一般来说,可以从其他持久值计算出来的值不应该是持久的,除非有充分的理由并特别注意避免不一致。
标签: sql postgresql expression default