【问题标题】:Deleting an entry and releasing from unique key index删除条目并从唯一键索引中释放
【发布时间】:2012-06-06 23:13:48
【问题描述】:

对于一个具有离线存储的项目,我创建了一个数据库,其中包含一个主键作为 id 以及一个保存日期的唯一字段。

当我删除一个条目时,我无法创建一个与已删除条目的日期相同的新条目。

当我删除那个条目时,我该怎么做才能从索引中取出日期?

这就是我创建表格的方式:

CREATE TABLE IF NOT EXISTS userdata (id INTEGER PRIMARY KEY ASC, entrydate DATE UNIQUE, strength, comments

我想知道我是否需要添加一些东西来告诉数据库服务器允许我在它再次空闲时再次使用相同的值。也许我需要运行某种更新,让 SQLite 更新其内部记录。

【问题讨论】:

    标签: sql sqlite web-sql unique-key


    【解决方案1】:

    我认为这里有几种可能性。

    1. 您的删除语句位于uncommitted transaction 中。因此,在您尝试插入之前,唯一值实际上并未从表中删除。

    2. 您要删除的值和要插入的新值实际上不是同一个值。运行选择并确保您尝试插入的值实际可用。

    3. 您的索引损坏,需要reindex it

    【讨论】:

    • 是的,我使用事务。这可能是原因。你知道如何提交交易吗?
    • 看看这里:grox.net/doc/sqlite/lang_transaction.html 我还用那个 linq 更新了答案。密切关注成功提交的要求。
    • 我试过这个,但它似乎在 HTML5 环境中不起作用。我在http://www.html5rocks.com/en/tutorials/webdatabase/todo/ 上使用了 STEP 5 中描述的事务
    • 我想通了,谷歌搜索并添加: db.transaction(function(tx){tx.executeSql("COMMIT",[]);}); --- @RThomas:非常感谢。没有你的帮助,我不会弄明白的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 2010-12-29
    • 1970-01-01
    • 2016-07-06
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多