基于Postgresql中的时间戳窗口创建唯一索引

时间:2016-07-06 17:47:57

标签: postgresql

我正在使用Postgresql 9.4。我想使用唯一索引来强制执行约束。假设我有一个包含以下字段的表:

name varchar not null,
started_on tiemstamp not null,
ended_on timestamp

ended_on为空时,名称被视为有效。只要没有其他name name为空,或ended_onstarted_on所限定的窗口没有ended_on,就可以多次使用name t与select * from table的任何其他窗口重合。

如果我要name | started_on | ended_on -----+------------+--------- asdf | 4 | 5 asdf | 7 | NULL 并获得这些结果(比如时间戳是纪元以来的秒数):

name | started_on | ended_on
-----+------------+---------
asdf |          4 |        5
asdf |          3 |     NULL

这没关系

但这不行:

ended_on

started_on/ended_on为空的约束是唯一的是容易的部分。但我无法弄清楚如何让约束与个别new ObjectMapper().readValue(request.getInputStream(), UserDto.class);次进行比较。

0 个答案:

没有答案