new TransactionalExecutor()
SQLTransaction管理・実行クラス
このオブジェクトは自分でnewすることはありません。
h5.api.sqldb.open().transaction()を呼び出した場合と、
Insert/Select/Update/Del/Sqlオブジェクトのexecute()が返すPromiseオブジェクトの、progressコールバックの引数に存在します。
ver1.1.7まではTransactionクラスとTransactionWrapperクラスが別々に存在していましたが、 ver1.1.8からはTransactionalExecutorクラスに統合されました。
本クラスに存在するexecute()とadd()の使用方法は、Transactionクラスのexecute()とadd()と同じです。
- Source:
Methods
(static) add(statement) → {TransactionalExecutor}
Parameters:
Name | Type | Description |
---|---|---|
statement |
Insert | Update | Del | Select | Sql | Statementクラスのインスタンス |
Returns:
Transactionオブジェクト
- Source:
(static) execute() → {Promise}
add()で追加された順にSQLを実行します
上記例の場合、3件 db.insert()をadd()で追加しているので、実行結果rsには3つのROWIDが格納されています。( [1, 2, 3]のような構造になっている )
実行結果は、戻り値であるPromiseオブジェクトのprogress()に指定したコールバック関数、またはdone()に指定したコールバック関数に返されます。
db.transaction() .add(db.insert('USER', {ID:10, NAME:TANAKA})) .add(db.insert('USER', {ID:11, NAME:YOSHIDA})) .add(db.insert('USER', {ID:12, NAME:SUZUKI})).execute().done(function(rs) { rs // 第一引数: 実行結果 });実行結果は配列(Array)で返され、結果の格納順序は、add()で追加した順序に依存します。
上記例の場合、3件 db.insert()をadd()で追加しているので、実行結果rsには3つのROWIDが格納されています。( [1, 2, 3]のような構造になっている )
また、progress()に指定したコールバック関数の第二引数には、トランザクションオブジェクトが格納され、このオブジェクトを使用することで、トランザクションを引き継ぐことができます。
db.select('PRODUCT', ['ID']).where({NAME: 'ball'}).execute().progress(function(rs, tx) { db.transaction(tx) .add(db.update('UPDATE STOCK SET PRICE = 2000').where({ID: rs.item(0).ID})) .execute(); });select().execute()で返ってきたトランザクションを、db.transaction()の引数に指定することで、db.select()とdb.transaction()は同一トランザクションで実行されます。
ver1.1.8からの変更点
execute()が返すPromiseオブジェクトのprogressコールバックの第二引数(TransactionalExecutorインスタンス)に、 Select/Insert/Del/Update/Sqlインスタンスをaddすることができるようになりました。下記のサンプルコードは、Statementインスタンスをtx.add()することにより、db.select()と同一トランザクションでSQLを実行しています。
db.transaction().add(db.select('PRODUCT', ['ID']).where({NAME: 'ballA'})).execute().progress(function(rsArray, tx) { tx.add(db.sql(' STOCK', {COUNT:20}).where({ID: rsArray[0].item(0).ID})).execute(); });
Returns:
Promiseオブジェクト
- Type
- Promise
- Source:
(static) promise() → {Promise}
SQLの実行結果を受け取ることができる、Promiseオブジェクトを取得します
Returns:
Promiseオブジェクト
- Type
- Promise
- Source: