SSブログ

広告

[メモ]PostgreSQLのctid [コンピュータ]

MLog: [pgsql-jp: 39258] Re:oidを使いたくなった場合
重複削除の SQL を書く場合、ctid が使えます。これは、行の物理位置を表します。
以下は、id をユニークの条件として、ctid が最大のもの以外を削除します。
DELETE FROM test
USING (SELECT id, max(ctid) AS ctid FROM test GROUP BY id) AS X
WHERE X.id = test.id AND X.ctid <> test.ctid;


System Columns
ctid
テーブル内における、行バージョンの物理的位置を表します。
ctid は行バージョンを素早く見つけるために使うことができますが、
行のctidは更新される、あるいはVACUUM FULLで移動させられると変わります。
したがって、ctidは長期の行識別子としては使えません。
論理行を識別するためには、OID、あるいはさらに良いのはユーザ定義の通番数を使うべきです。

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。