自動インクリメント整数フィールドをすぐにに追加することが可能かどうか、私はCREATE TABLE
ステートメントで定義していないのでしょうか?PostgreSQLの自動インクリメントカラムはオンザフライですか?
例えば、私は文を持っている:
SELECT 1 AS id, t.type FROM t;
と私は
SELECT some_nextval_magic AS id, t.type FROM t;
にこれを変更することができています私はsome_nextval_magic
部分にその場で自動インクリメントフィールドを作成する必要がありますなぜなら、結果の関係は、より大きなSQLステートメントの構築中にというの一時的なものであるからです。 id
フィールドの値は、それが一意である限り重要ではありません。
多くの場合、SERIAL
を指定するか、またはをCREATE TABLE
に含む関連する質問(PostgreSQL Autoincrement)の回答を検索します。しかし、必ずしもCREATE TABLE
またはVIEW
を使用する必要はありません(私がしなければ)。 generate_series()
についての議論もいくつかありますが、ここに当てはまるかどうかはわかりません。
- 更新 -
私のモチベーションは、PostGISの拡張子についてこのGIS.SE answerに例示されています。元のクエリは:g.path[1] as gid
は「QGISでの可視化のために必要な」idフィールドで
CREATE VIEW buffer40units AS
SELECT
g.path[1] as gid,
g.geom::geometry(Polygon, 31492) as geom
FROM
(SELECT
(ST_Dump(ST_UNION(ST_Buffer(geom, 40)))).*
FROM point
) as g;
。唯一の必要条件は、整数とユニークなです。 g.path[]
配列が空の場合、上記のクエリを実行するといくつかのエラーが発生しました。
上記のクエリで列を修正しようとしますが、この考えは私に来た:gid
値はとにかく問題ではありませんので
、代わりにここで使用することができ、自動インクリメント機能はありますか?
PostgreSQLにはCREATE SEQUENCEがあります。これらの数字から数字を増やすことができます。 – Thilo
@tinlyx必要な一意性の詳細を教えてください。クエリ内ではローカルクエリとグローバルクエリで比較します – donkopotamus
コードを投稿してください。適切な質問をする方法を知っていれば十分に長い間あなたは周りにいました。ステートメントの作成方法に応じてさまざまな解決策があります。詳細な情報がなければ、野生の趣味は何も得られません。 – Patrick