new Update()
指定されたテーブルに対して、更新処理(UPDATE)を行うクラス
このオブジェクトは自分でnewすることはありません。
h5.api.sqldb.open().update()を呼び出すと、このクラスのインスタンスが返されます。
- Source:
Methods
(static) where(whereObj) → {Update}
WHERE句を設定します
条件は以下の方法で設定できます。
- オブジェク
- 文字列
例. IDが0以上100以下。
db.update('USER', { NAME: 'TANAKA' }).where({ 'ID >': 0, 'ID <=': 100 })オペレータで使用可能な文字は以下の通りです。
- <=
- <
- >=
- >
- =
- !=
- like (sqliteの仕様上大文字・小文字を区別しない)
エスケープ文字の指定方法
キーに『カラム名[半角スペース]オペレータ[半角スペース]エスケープ文字』のように指定します。
エスケープ文字はクォートやダブルクォートで囲わず、エスケープ文字のみ指定して下さい。
例. $をエスケープ文字として指定する場合
db.update('USER', { NAME: 'TANAKA' }).where({ 'NAME like $': 'SUZUKI$' });
文字列の場合、SQLステートメントに追加するWHERE文を指定します。
例. IDが0以上100以下。
db.update('USER').where('ID >= 10 AND ID <= 100')
Parameters:
Name | Type | Description |
---|---|---|
whereObj |
Object | String | 条件 |
Returns:
Updateオブジェクト
- Type
- Update
- Source:
execute() → {Promise}
このオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します
実行結果は、Promiseオブジェクトのprogress()に指定したコールバック関数または、done()に指定したコールバック関数に、更新されたレコードの件数が返されます。
db.update('USER', {NAME:TANAKA}).where({ID:10}).execute().done(function(rowsAffected) { rowsAffected // 更新されたレコードの行数(Number型) });また、progress()に指定したコールバック関数の第二引数には、トランザクションオブジェクトが格納され、このオブジェクトを使用することで、トランザクションを引き継ぐことができます。
db.select('PRODUCT', ['ID']).where({NAME: 'ball'}).execute().progress(function(rs, tx) { db.update('STOCK', {PRICE: 2000}, tx).where({ID: rs.item(0).ID}).execute(); });db.select().execute()で返ってきたトランザクションを、db.update()の第三引数に指定することで、db.select()とdb.update()は同一トランザクションで実行されます。
ver1.1.8からの変更点
execute()が返すPromiseオブジェクトのprogressコールバックの第二引数(TransactionalExecutorインスタンス)に、 Select/Insert/Del/Update/Sqlインスタンスをaddすることができるようになりました。下記のサンプルコードは、tx.add()で追加したStatementインスタンスを、一番最初に実行したdb.select()と同一トランザクションでSQLを実行します。
db.select('PRODUCT', ['ID']).where({NAME: 'ballA'}).execute().progress(function(rs, tx) { tx.add(db.update('STOCK', {COUNT: 10}).where({ID: rs.item(0).ID})).execute().done(function() { alert('success'); }); });
Returns:
Promiseオブジェクト
- Type
- Promise
- Source: