JetDelete 関数
適用対象: Windows |Windows Server
JetDelete 関数
JetDelete 関数は、データベース テーブル内の現在のレコードを削除します。
JET_ERR JET_API JetDelete(
__in JET_SESID sesid,
__in JET_TABLEID tableid
);
パラメーター
sesid
API 呼び出しに使用されるデータベース セッション コンテキスト。
tableid
データベース テーブル上のカーソル。 現在の行は削除されます。
戻り値
この関数は、次のいずれかのリターン コードを使用して 、JET_ERR データ型を返します。 考えられる ESE エラーの詳細については、「 拡張可能ストレージ エンジン エラー 」および「 エラー処理パラメーター」を参照してください。
リターン コード |
説明 |
---|---|
JET_errSuccess |
操作は正常に完了しました。 |
JET_errCallbackFailed |
コールバック関数は何らかの方法で失敗しました。 たとえば、コールバック関数のアクセス違反がキャッチされ、JET_errCallbackFailedに変換されます。 このエラーは、Windows XP 以降でのみ返されます。 |
JET_errClientRequestToStopJetService |
JetStopService の呼び出しの結果、セッションに関連付けられたインスタンス上のすべてのアクティビティが停止したため、操作を完了することはできません。 |
JET_errIllegalOperation |
tableid で指定されたカーソルは削除をサポートしていません。 「解説」を参照してください。 |
JET_errInstanceUnavailable |
セッションに関連付けられているインスタンスで致命的なエラーが発生したため、操作を完了できません。このエラーでは、そのデータの整合性を保護するためにすべてのデータへのアクセスを取り消す必要があります。 このエラーは、Windows XP 以降のリリースでのみ返されます。 |
JET_errNoCurrentRecord |
tableid で指定されたカーソルがレコード上にありません。 |
JET_errNotInitialized |
セッションに関連付けられているインスタンスがまだ初期化されていないため、操作を完了できません。 |
JET_errRestoreInProgress |
セッションに関連付けられているインスタンスで復元操作が進行中であるため、操作を完了できません。 |
JET_errPermissionDenied |
データベース エンジンには、レコードを削除するための十分なアクセス許可がありません。 これは、データベース ファイルが読み取り専用アクセスで開かれた場合に発生する可能性があります。 |
JET_errRollbackError |
更新バッファー ( JetPrepareUpdate を参照) が存在しますが、JET_coltypLongText型の列やJET_coltypLongBinary型の列に加えられたすべての変更をロールバックできるわけではありません。 |
JET_errSessionSharingViolation |
複数のスレッドから同じセッションを同時に使用することは無効です。 このエラーは、Windows XP 以降のリリースでのみ返されます。 |
JET_errTermInProgress |
セッションに関連付けられているインスタンスがシャットダウンされているため、操作を完了できません。 |
JET_errTransReadOnly |
トランザクションは読み取り専用トランザクションであり、削除はサポートされていません。 |
JET_errVersionStoreOutOfMemory |
更新に関するトランザクション情報を保持するのに十分なメモリがないため、操作が失敗しました。 |
JET_errWriteConflict |
別のセッションでは、更新のためにレコードが以前にロックされています。 このセッションによって試行された更新は失敗します。 |
成功すると、通貨は次のレコードの直前に残ります。 削除されたレコードがテーブルの最後のレコードである場合、通貨はテーブルの末尾 (つまり、新しい最後のレコードの後) に残ります。 削除されたレコードがテーブル内の唯一のレコードである場合、通貨は先頭に設定されます。
適切なインデックスが自動的に更新されます。
更新プログラムが準備されている場合 ( JetPrepareUpdate を使用)、更新プログラムは取り消されます。 更新バッファーがリセットされます。
失敗した場合、通貨は変更されません。 更新プログラムが準備されている場合 ( JetPrepareUpdate を参照)、更新バッファーがリセットされる可能性があります。
注釈
すべてのテーブルで行の削除がサポートされているわけではありません。 一時テーブルは通常、行の削除をサポートしていません。 レコードの削除は、さまざまな理由で一時テーブルで有効にできます。その一部は次のとおりです。
JET_bitTTUpdatableは作成時に指定されました。
大きな一時テーブルは、JET_bitTTScrollableまたはJET_bitTTIndexedを使用して作成された場合、削除をサポートできます。 一時テーブルが "大" になるしきい値は現在 64 KB ですが、今後のリリースで変更される可能性があります。
Windows XP 以降。 コールバック関数は、JET_cbtypBeforeDeleteやJET_cbtypAfterDeleteなど、 JetDelete によって呼び出すことができます。
1 つのトランザクション内で多数の更新操作を実行した場合の影響を理解することが重要です。 データベースに対する各更新は、バージョン ストア内のデータベース エンジンによって追跡される必要があります。 バージョン ストアには、データベース内の各レコードまたはインデックス エントリのすべての異なるバージョンのライブ レコードが保持され、すべてのアクティブなトランザクションで確認できます。 これらのバージョンは、データベース エンジンが使用する複数バージョンのコンカレンシー制御をサポートするために使用され、スナップショット分離を使用したトランザクションをサポートします。 データベース エンジンがこれらのバージョンの格納に使用するリソースを使い果たした後、一部のトランザクションでこれらのリソースの再利用が完了するまで、それ以上の変更を受け入れなくなります。 エンジンがこの状態になると、すべての更新はJET_errVersionStoreOutOfMemoryで失敗します。 データベース エンジンがこれらのバージョンを格納するために使用できるリソースは、 JetSetSystemParameter と JET_paramMaxVerPages と JET_paramGlobalMinVerPagesを使用して制御できます。
要件
要件 | 値 |
---|---|
Client |
Windows Vista、Windows XP、または Windows 2000 Professional が必要です。 |
[サーバー] |
Windows Server 2008、Windows Server 2003、または Windows 2000 Server が必要です。 |
Header |
Esent.h で宣言されています。 |
Library |
ESENT.lib を使用します。 |
[DLL] |
ESENT.dllが必要です。 |
参照
JET_ERR
JET_SESID
JET_TABLEID
JetOpenTempTable
JetPrepareUpdate
システム パラメーター