2012-02-21 7 views
1

はのは、2つのテーブルと仮定しましょう:私はInsert On table1後に実行するトリガを作成したい TABLE1 [idTble1、elmt1_T1、elmt2_T1] table2の[idTble2、id_Tble1、elmt1_T2、インデックス] をし、JSラッパーでsqliteのトリガーを作成する方法を

id_Tble1 = new.idTble1 
elmt1_T2 = new.elmt1_T1 

インデックスは、ユーザによって設定された値であり、そののみ表2に保存されている表2に新しい行を挿入します。 私は、次の

var createTrigger = "CREATE TRIGGER triggerInsert AFTER INSERT ON Table1 REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN INSERT INTO Table2 (id_Tble1, elmt1_T2, index) VALUES (:new.idTble1, :new.elmt_T1, ?); END;"; 
db.transaction(function(tx) { 
    tx.executeSql(createTrigger, [i], null, onError); 
    }); 

を試してみましたが、私は((「参照」の近くに1文を準備することができませんでしたエラーが発生しました:構文エラー)いくつかのlooooong時間後

+0

構文エラーSQLが有効なJSではないためです。他にもエラーがあるように見えます。まず最初は、私は[SQLiteのドキュメント](http://www.sqlite.org/lang_createtrigger.html)で 'REFERENCING'句を見ていないよcreateTrigger' –

+1

'あなたのSQLの前後に引用符を入れて、それを変数に割り当てます。あなたはこの条項なしでそれを試しましたか? – nrabinowitz

+0

私の悪いが、私は私のポストを再編集し、私は句を参照する取ったのvar createTrigger = を追加し、今誤差がある:(1に近い「」:構文エラー) – JMarc

答えて

1

、私はそれが、少なくとも、働いてしまいました。部分的に私はソフトウェアたSQLiteManagerが、でもデモバージョンでは、コードのデバッグに役立つだったことを認めざるを得ない ここで働くトリガーです。

var createTrigger = "CREATE TRIGGER triggerInsert AFTER INSERT ON Table1 BEGIN INSERT INTO Table2 (id_Tble1, elmt1_T2, index) VALUES (new.idTble1, new.elmt_T1, new.index); END"; 
db.transaction(function(tx) { 
    tx.executeSql(createTrigger, [], null, onError); 
    }); 

を、私は部分的に言うとき、私はできなかったので、ありますトリガーを持つフォームの 'index'の値を使用します。それでは、私がしなければならなかったことは表1に新しいフィールド(インデックス)を作成することでした。

関連する問題