SQLite のドキュメントによると、すべてのテーブルにはデフォルトで行 ID があり、削除することはできません。rowid
そして、このROWIDには、oid
またはでアクセスできます_rowid_
。
いずれにせよ、データベース ユーザーは自由に名前を付けて新しい列を追加でき、列は非表示になります。行 ID にアクセスする唯一の方法は、新しい列を作成することINTEGER PRIMARY KEY
です。
これが私の現在の理解です。これにより、ユーザーがすべての列を非表示にし、ユーザーが PK 列を作成しなかった場合、 ROWIDを取得する信頼できる方法がありません。一時的な PK 列を追加することも考えましたが、これも信頼できません。これが本当なら、意味がありません。データは常に利用可能であり、適切なインターフェイスがないためにアクセスできないからです。
したがって、このデータに確実にアクセスする方法が必要だと思います。しかし、C API では何も見つかりませんでした。これについていくつかのガイダンスがありますか?