从理论上讲,您可以使用像这样工作的约束。(但是实际上它是行不通的。)
在创建CHECK约束之前,您可能必须插入一行。如果您不这样做,则max(column)将返回NULL。一排
有10排。。
序列是否从1开始并不重要;如果存在的话,这种检查方法将始终显示出一个空白。如果需要保证无缝序列从1开始,则可以将其添加到CHECK约束中。
据我所知,没有任何方法可以对当前的所有dbms进行声明式处理。为此,您需要对的支持CREATE ASSERTION
。(但是我可能是错的。)在Postgresql中,我认为您唯一的选择就是在多个AFTER触发器中包含过程代码。
我只有一张表,不需要缝隙。这是日历表。我们每晚执行一次查询,以进行这些计算,并让我知道我是否有差距。