実際に進行中の ROWID と RECID とは何ですか。ROWID の代わりに RECID を使用できますか。それらの違いは何ですか??
2 に答える
RECIDとROWIDはどちらも、データベース内の特定のレコードへの一意のポインターです。
どちらもデータベース自体への多かれ少なかれ物理的なポインターですが、基盤となるプラットフォームに同等のものがない OpenEdge 以外のテーブルは除きます。そのような場合、主キーを構成する値で構成されている可能性があります。
RECID は 10.1A までの 32 ビット整数で、データベースが OpenEdge データベースで領域が 1 つしかない場合は問題ありませんでした。10.1B 以降、これらは 64 ビット整数にアップグレードされました。
v6 では、OpenEdge 以外のデータベースに接続するための容量が追加され、v8 では、複数のストレージ領域の OpenEdge データベースを作成するための容量が追加されました。その時点で、RECID は、すべての状況でテーブル内のすべてのレコードを一意にアドレス指定するには不十分でした。
そこで、ROWID 構造が誕生しました。その実際のアーキテクチャは、下にあるデータベースのタイプによって異なりますが、整数であるという制限に悩まされることはありません。
ドキュメントには、OpenEdge データベースのメタスキーマを操作するコードを除いて、今後は RECID を使用してはならないことが明確に記載されています。
RECID は現在、いくつかのバージョンで廃止されています。ROWID はそれに代わるものです。実際に返されるのは、レコードを含む DB ブロックの物理アドレスであることを理解しています。メモリから、彼らは 4GL からさまざまな DB エンジン (Oracle / SQL サーバーなど) をサポートしたいときに ROWID を導入しました。これは、ROWID には RECID よりも多くの機能があることを意味します。
私は RECID を避けたいと思います。短期的には回避できるかもしれませんが、完全に回避できる潜在的な問題を自分自身に与えています。