いいえ。自然な秩序がないので データベーステーブルの行の数を処理する必要があるのは、テーブルの値だけです。
さて、Postgres固有のシステム列cmin
があります およびctid
あなたはできた ある程度の虐待。
タプルID(ctid
)には、ファイルのブロック番号と行のブロック内の位置が含まれます。したがって、これはディスク上の現在の物理的な順序を表します。後で追加すると、ctid
が大きくなります 、通常 。 SELECTステートメントは次のようになります
SELECT *, ctid -- save ctid from last row in last_ctid
FROM tbl
WHERE ctid > last_ctid
ORDER BY ctid
ctid
データ型はtid
。例:'(0,9)'::tid
ただし、安定していません VACUUM
以降、長期識別子として または任意の同時UPDATE
または、他の操作によって、タプルの物理的な場所をいつでも変更できます。ただし、トランザクションの期間中は安定しています。そして、挿入するだけで何もしない それ以外の場合は、目的に応じてローカルで機能する必要があります。
デフォルトのnow()
でタイムスタンプ列を追加します serial
に加えて 列...
また、列のデフォルトを許可します id
を入力します 列(serial
またはIDENTITY
桁)。これにより、明示的にフェッチして挿入するよりも後の段階でシーケンスから番号が取得されるため、競合状態のウィンドウが最小化されます(ただし、削除されるわけではありません)。id
が低くなる可能性があります。 後で挿入されます。詳細な手順:
- テーブル列の自動インクリメント