我有一个存储在关系数据库中的版本化对象。条目由整数ID和修订号标识。在存储新版本时,我想自动增加数字
-- Describe FOO
CREATE TABLE foo (
id INTEGER NOT NULL,
revision INTEGER NOT NULL,
content TEXT,
PRIMARY KEY (id, revision)
)
如果修订版本已存在,我想使用select查询自动提供最高版本号+ 1,如果找不到结果,则为0。第一部分很简单,例如如果我有以下数据:
id | revision | content
1 | 0 | foo
1 | 1 | bar
1 | 2 | bam
1 | 3 | bang
然后
select max(revision) + 1 from foo where foo.id = 1
> 3
当我查询到foo.id = 2时,是否可以对查询应用简单的调整使其返回0?
count(*)
是一个选项,但即使我们使用的是只写一次方案,我也不想依赖于数据库中存在的0-current_revision的所有修订版。
答案 0 :(得分:1)
您正在寻找coalesce()
功能:
select coalesce(max(revision) + 1, 0)
from foo
where foo.id = 1;