SQLite Manager(Firefox)不对多行执行UPDATE语句

时间:2015-03-09 10:58:53

标签: sqlite firefox sqlitemanager

我对在SQLite中进行简单更新似乎失败感到困惑。我已经在Firefox中安装了SQLite Manager,我想在那里更新moz_places表,因为我们最近更改了'provider',而不是在Firefox中清除我的整个历史记录我认为如果我可以简单地更新信息那么历史记录点会很好到新的位置。

想法是运行此代码:

UPDATE moz_places SET url = REPLACE(url, '.old.com/', '.new.com/')

当我按[运行SQL]时,我的印象是即使上一个错误字段显示“不是错误”也没有任何反应。也许它只是非常快?不,当我然后进入数据时,我发现它没有更新一个东西,我的地方文件夹仍然充满了old.com网址。

然而,当我尝试

UPDATE moz_places SET url = REPLACE(url, '.old.com/', '.new.com/') WHERE id = 2458

它会更新这一条记录。

天真地假设SQLite语法需要WHERE我然后添加了

UPDATE moz_places SET url = REPLACE(url, '.old.com/', '.new.com/') WHERE id > 0

但这也没有给我任何结果。

SQLite是否只允许单行更新?在互联网上四处看看我没有看到这样的限制,但除此之外我不确定会出现什么问题。

PS:我在%appdata%中找到的/ Profiles /文件夹的副本上这样做,而不是直接在'live'版本上。所以锁定也不应该是一个问题。

2 个答案:

答案 0 :(得分:0)

好的,愚蠢的我。

事实证明这是失败的,因为我已经在那里使用new.com网址创建了一些记录,然后我的UPDATE会导致冲突。

我通过这条路线解决了这个问题:

UPDATE moz_places 
   SET url = REPLACE(moz_places.url, '.old.com', '.new.com') 
 WHERE NOT EXITS ( SELECT *
                      FROM moz_places o 
                     WHERE o.url = REPLACE(moz_places.url, '.old.com', '.new.com') )

确实需要一段时间才能完成;使SQLite Manager无法响应,但最终它现在显示了我希望它们的内容。

答案 1 :(得分:0)

更新查询不起作用。唯一的解决方法是

  1. 编写更新查询,例如

    UPDATE table_name SET "col_name" = 'Anand Goudar' WHERE "col_id" = 'Something'
    
  2. 查询后,单击Enter列表项

  3. 将鼠标悬停在文件上(左上角),然后单击“下载活动数据库”
  4. 保存文件,此文件将具有更新的信息。

通常假设是,执行查询时,表行必须更改,但是在此情况下不会发生。因此,对于每个Update / Insert / Delete查询,您都需要下载Active Database。

可怜的东西,但我确定他们(Sqlite管理器)会提出解决方案