リレーショナル データベースに格納されているバージョン管理されたオブジェクトがあります。エントリは整数 ID とリビジョン番号で識別されます。新しいリビジョンの保存時に、番号を自動的にインクリメントしたい
-- Describe FOO
CREATE TABLE foo (
id INTEGER NOT NULL,
revision INTEGER NOT NULL,
content TEXT,
PRIMARY KEY (id, revision)
)
選択クエリを使用して、リビジョンが既に存在する場合は最大のリビジョン番号 + 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(*)オプションになりますが、書き込みのみのスキームを使用している場合でも、DB に存在する 0-current_revision からのすべてのリビジョンに依存したくありません。