4

我尝试使用 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')");
4

1 回答 1

0

是否INSERT在与 相同的数据库连接上执行CREATE?因为PRAGMA foreign_keys = ON仅对连接有效。它必须为您打开的每个连接执行。

此外,请确保在您不在事务中时运行该 PRAGMA 语句,因为这不会产生任何影响。您以开头的示例代码tx.表明这是您的问题的原因。

更新 正如MisterSmith在评论中指出的那样,基于 Chromium 的浏览器的扩展无论如何都不能在事务之外运行 SQL 语句,因此不可能执行外键。

因此,您必须确保您的外键在应用程序代码中保持完整性,或者您可以编写触发器来强制执行外键(如果 Chromium 扩展允许触发器)。

于 2012-12-20T17:05:01.653 回答