我尝试使用 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')");
Is the INSERT
在相同的数据库连接上执行CREATE
?因为PRAGMA foreign_keys = ON
仅对连接有效。必须为您打开的每个连接执行它。
另外,请确保在未处于事务中时运行该 PRAGMA 语句,因为那不会有任何影响 http://www.sqlite.org/pragma.html#pragma_foreign_keys。您的示例代码开头为tx.
表明这就是您的问题的原因。
UPDATE正如评论中指出的史密斯先生 https://stackoverflow.com/users/813951/mister-smith,基于 Chromium 的浏览器的扩展无论如何都无法在事务之外运行 SQL 语句,因此不可能执行外键。
因此,您必须确保您的外键在应用程序代码中保持完整性,或者您可以编写触发器强制执行外键 http://www.justatheory.com/computers/databases/sqlite/foreign_key_triggers.html(如果 Chromium 扩展允许触发器,那就是)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)