DOM

インターフェイス

IDBTransaction インターフェイス

  編集:2022.04.07 by T.A.

MS

IDBTransaction は IndexedDB API のインターフェイスで、イベントハンドラー属性を使用してデータベース上の静的で非同期のトランザクションを提供します。すべてのデータの読み書きはトランザクション内で行われます。IDBDatabase を使用してトランザクションを開始し、IDBTransaction を使用してトランザクションのモードを設定し(例 readonly または readwrite)、IDBObjectStore にアクセスしてリクエストを作成します。IDBTransaction オブジェクトを使用してトランザクションを中止することもできます。

注: この機能は Web Worker 内で利用可能です

¶省く

プロパティ
IDBTransaction.db 読取専用
このトランザクションが関連付けられているデータベース接続。
IDBTransaction.error 読取専用
トランザクションが失敗したときに発生したエラーのタイプを示す DOMException を返します。トランザクションが終了しておらず、終了して正常にコミットされている場合、このプロパティは null になります。または、IDBTransaction.abort() 関数で中止されました。
IDBTransaction.mode 読取専用
トランザクションのスコープ内にあるオブジェクトストア内のデータへのアクセスを分離するためのモード。デフォルト値は読み取り専用です。
IDBTransaction.objectStoreNames 読取専用
トランザクションに関連付けられた IDBObjectStore オブジェクトの名前の DOMStringList を返します。
メソッド

継承元: EventTarget

IDBTransaction.abort()
このトランザクションに関連付けられているデータベース内のオブジェクトへのすべての変更をロールバックします。このトランザクションが中止または完了した場合は、このメソッドはエラーイベントを発生させます。
IDBTransaction.objectStore()
このトランザクションのスコープの一部であるオブジェクトストアを表す IDBObjectStore オブジェクトを返します。
IDBTransaction.commit()
アクティブなトランザクションの場合、トランザクションをコミットします。通常、これを呼び出す必要はないことに注意してください ― すべての未処理の要求が満たされ、新しい要求が行われなくなると、トランザクションは自動的にコミットされます。commit() を使用すると、未処理の要求からのイベントがディスパッチされるのを待たずに、コミットプロセスを開始できます。
イベント

addEventListener() を使用するか、このインターフェイスの oneventname プロパティにイベントリスナーを割り当てることにより、これらのイベントをリッスンします。

abort(en-US)
IndexedDB トランザクションが中止されたときに発生します。onabort(en-US)プロパティからも利用できます。
complete
トランザクションが正常に完了したときに発生します。oncomplete(en-US)プロパティからも利用できます。
error(en-US)
リクエストがエラーを返し、イベントがトランザクション オブジェクトにバブルアップしたときに発生します。

onerror(en-US)プロパティからも利用できます。

モード定数

非推奨 Gecko 13(Firefox 13/Thunderbird 13/SeaMonkey 2.10): この機能は非推奨になりました。まだ対応しているブラウザーがあるかもしれませんが、すでに関連するウェブ標準から削除されているか、削除の手続き中であるか、互換性のためだけに残されている可能性があります。使用を避け、できれば既存のコードは更新してください。このページの下部にある互換性一覧表を見て判断してください。この機能は突然動作しなくなる可能性があることに注意してください。

これらの定数は使用できなくなりました ― Gecko 25 で削除されました。代わりに、文字列定数を直接使用する必要があります。(バグ888598

トランザクションには、次の3つのモードのいずれかを使用できます:

定数 説明
READ_ONLY "readonly"(0 in Chrome) データの読み取りを許可しますが、変更はできません。
READ_WRITE "readwrite"(1 in Chrome) 既存のデータストアのデータの読み取りと書き込みを変更できます。
VERSION_CHANGE "versionchange"(2 in Chrome) オブジェクトストアとインデックスを削除および作成する操作を含む、すべての操作を実行できるようにします。このモードは、IDBDatabase オブジェクトの IDBDatabase.setVersion() メソッドを使用して開始されたトランザクションのバージョン番号を更新するためのものです。このモードのトランザクションは、他のトランザクションと同時に実行することはできません。このモードのトランザクションは、「アップグレードトランザクション」と呼ばれます。

これらの定数が廃止されたとしても、必要に応じて、引き続きそれらを使用して下位互換性を提供できます(Chrome ではバージョン 21 で変更が行われました)。オブジェクトが使用できなくなった場合に備えて、防御的にコーディングする必要があります。

var myIDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || { READ_WRITE: "readwrite" };
次のコードスニペットでは、データベースで読み取り/書き込みトランザクションを開き、オブジェクト ストアにデータを追加します。成功または失敗した場合にトランザクションが開始された結果をレポートするために、トランザクション イベントハンドラーに接続されている関数にも注意してください。完全に機能する例については、To-Do通知アプリを参照してください(例をライブで表示)。
// Let us open our database
var DBOpenRequest = window.indexedDB.open("toDoList", 4);

DBOpenRequest.onsuccess = function(event) {
  note.innerHTML += '<li>Database initialised.</li>';

  // store the result of opening the database in the db
  // variable. This is used a lot below
  db = DBOpenRequest.result;

  // Add the data to the database
  addData();
};

function addData() {
  // Create a new object to insert into the IDB
  var newItem = [ { taskTitle: "Walk dog", hours: 19, minutes: 30, day: 24, month: "December", year: 2013, notified: "no" } ];

  // open a read/write db transaction, ready to add data
  var transaction = db.transaction(["toDoList"], "readwrite");

  // report on the success of opening the transaction
  transaction.oncomplete = function(event) {
    note.innerHTML += '<li>Transaction completed: database modification finished.</li>';
  };


  transaction.onerror = function(event) {
  note.innerHTML += '<li>Transaction not opened due to error. Duplicate items not allowed.</li>';
  };

  // create an object store on the transaction
  var objectStore = transaction.objectStore("toDoList");

  // add our newItem object to the object store
  var objectStoreRequest = objectStore.add(newItem[0]);

  objectStoreRequest.onsuccess = function(event) {
    // report the success of the request (this does not mean the item
    // has been stored successfully in the DB - for that you need transaction.oncomplete)
    note.innerHTML += '<li>Request successful.</li>';
  };
};

transaction . durability
transaction の作成時に与えた耐久能ヒント("strict"/"relaxed"/"default")を返す。

🚧 これは、この版による新たな属性である。Chrome 82、Edge 82 からサポートされている。 🚧


テスト
HTML:

ここに表示
スクリプト組み込み:



スクリプト:


スクリプト:



表示内容:
表示内容: