【发布时间】:2012-02-21 03:43:40
【问题描述】:
假设有 2 个表:
表 1[idTble1,elmt1_T1,elmt2_T1]
table2[idTble2,id_Tble1,elmt1_T2,索引]
我想创建一个在Insert On table1 之后运行的触发器,并在 Table2 中插入一个新行,其中
id_Tble1 = new.idTble1
elmt1_T2 = new.elmt1_T1
index 是用户设置的值,只保存在 Table2 中。 我已经尝试了以下
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);
});
但我收到一个错误(无法准备语句(“REFERENCING”附近的 1:语法错误)。
【问题讨论】:
-
语法错误是因为 SQL 不是有效的 JS。看起来还有其他错误。首先,在您的 SQL 周围加上引号并将其分配给变量
createTrigger -
我在SQLite docs 中没有看到
REFERENCING子句。你试过没有这个子句吗? -
我的错,我重新编辑了我的帖子并添加了 var createTrigger = I take of REFERENCING 子句,现在错误是:(1 near ".": syntax error)
-
新的错误是什么?下一个明显的事情是你不应该命名一个变量
new,你应该将该变量传递给tx.executeSql,但仍然不足以说明。这是 Node.js 吗? -
从我在网上找到的,例如插入 Table1 的新元素在 Table2 Insert 中被引用为 :new.FieldName。没有 Node.js,它是客户端 JS。
标签: javascript sqlite triggers insert