我尝试使用web sql在我的应用程序中使用外键..我在Chrome中测试..没有错误..但是当我用手动插入到表格img(包含FK)测试时 我希望失败..但插入仍然成功..这是我的代码..请帮助我..
tx.executeSql("PRAGMA foreign_keys = ON;");
tx.executeSql("CREATE TABLE IF NOT EXISTS img (ID INTEGER PRIMARY KEY ASC,imgID VARCHAR, image VARCHAR, FOREIGN KEY (imgID) REFERENCES trans (ID) )", []);
我在这种情况下尝试使用FK方法保存我的图像名称数据并连接到trans表..
我的插入代码
tx.executeSql("insert into img (imgID,image) values ('100','23.jpg')");
答案 0 :(得分:0)
INSERT
是否在与CREATE
相同的数据库连接上执行?因为PRAGMA foreign_keys = ON
仅对连接有效。必须为您打开的每个连接执行它。
此外,请确保在未处于事务中时运行该PRAGMA语句,因为that wouldn’t have any effect。以tx.
开头的示例代码表明这是导致问题的原因。
<强>更新强> 正如MisterSmith的评论所指出的那样,基于Chromium的浏览器的扩展无论如何都无法在事务之外运行SQL语句,因此无法执行外键修改。
因此,您必须确保外键在应用程序代码中保持完整性,或者您可以编写triggers to enforce the foreign keys(如果允许触发器使用Chromium扩展,则可以。)