gpt4 book ai didi

sqlite - 为什么外键在 websql 中不起作用..?

转载 作者:行者123 更新时间:2023-12-03 16:36:05 25 4
gpt4 key购买 nike

我尝试使用 web sql 在我的应用程序中使用外键。
我希望失败.. 但插入仍然成功.. 这是我的代码.. 请帮助我..

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 方法来保存我的图像名称数据并连接到转换表..

我的插入代码
tx.executeSql("insert into img (imgID,image) values ('100','23.jpg')");

最佳答案

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

另外,请确保在您不在事务中时运行该 PRAGMA 语句,因为 that wouldn’t have any effect .您的示例代码以 tx. 开头表明这是您的问题的原因。

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

因此,您必须确保您的外键在您的应用程序代码中保持完整性,或者您可以编写 triggers to enforce the foreign keys (如果 Chromium 扩展允许触发器,那就是)。

关于sqlite - 为什么外键在 websql 中不起作用..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13968602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com