IDBTransaction は IndexedDB API のインターフェイスで、イベントハンドラー属性を使用してデータベース上の静的で非同期のトランザクションを提供します。すべてのデータの読み書きはトランザクション内で行われます。IDBDatabase を使用してトランザクションを開始し、IDBTransaction を使用してトランザクションのモードを設定し(例 readonly または readwrite)、IDBObjectStore にアクセスしてリクエストを作成します。IDBTransaction オブジェクトを使用してトランザクションを中止することもできます。
注: この機能は Web Worker 内で利用可能です
¶省く
継承元: EventTarget
addEventListener() を使用するか、このインターフェイスの oneventname プロパティにイベントリスナーを割り当てることにより、これらのイベントをリッスンします。
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" };
// 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>';
};
};
🚧 これは、この版による新たな属性である。Chrome 82、Edge 82 からサポートされている。 🚧
| 表示内容: |
| 表示内容: |