2012-01-20 10 views
4

ではなく増分のをデクリメントすることを自動カウンター/フィールドを持っているPostgreSQLやMySQLのいずれかにおける方法はありPostgreSQLまたはMySQLに逆の "AUTO_INCREMENT"を実装していますか? (他のオプションが存在しない場合、私は実装にオープンしていた)を手動でそれを行うには持っなければ

現在のアプリケーションではさまざまな理由から、最も最近追加されたレコードを調べるだけで、データ型の観点から見ればさらに多くのエントリをテーブルに追加できますデータ型のmaxから最新のIDを減算するのではなく、

いずれのシステムでも "AUTO_DECREMENT"またはそれに類するものがありますか?

+0

引いは本当に難しい取得しますか? – Ryan

+1

@minitech - 一意的には、主キーフィールドのサイズが自動インクリメントの場合、サイズを知ることはできませんが、デクリメントすると、残りの数、キーフィールドのサイズなどを即座に知ることができます。 – warren

+1

あなたが精神的な減算をうまく利用すれば、それは...ですが、プログラミング全体のポイントではありませんか? – Ryan

答えて

6

あなたはPostgreSQLの手動設定のビットをしなければならないが、あなたがそのような順序を設定することができます。

create sequence example_seq 
increment by -1 
minvalue 1 
maxvalue 5 
start with 5; 

create table example(
example_id int primary key default nextval('example_seq'), 
data text not null 
); 

alter sequence example_seq owned by example.example_id; 

私はserial列を持つテーブルを作成するために同等であることと、その後自動変更するであろうと仮定生成された配列。私は5つの以上の行を挿入しようとした場合、私は5から私はexample_idカウントダウンを取得いくつかの行を挿入した場合

は今、私はnextval: reached minimum value of sequence "example_seq" (1)

+0

ありがとう - これはちょうど私がこの場合に必要としているもののように見えます:) – warren

関連する問題