gpt4 book ai didi

C++ 和 Sqlite DELETE 查询实际上并没有从数据库文件中删除值

转载 作者:搜寻专家 更新时间:2023-10-30 20:08:39 24 4
gpt4 key购买 nike

我在 SQlite 和 c++ 上遇到过这个问题,但我找不到任何答案。

在 SQlite 和 c++ 中一切正常,所有查询所有输出所有函数,但我有这个问题找不到任何解决方案。

我创建一个数据库MyTest.db我创建一个表测试,其中包含一个 id 和一个名称作为字段我为每个 id=1 name=Name1 和 id=2 name=Name2 输入 2 个值我删除第二个值

表中的数据现在说我只有 id=1 和 name=Name1

当我用 notepad.exe 打开我的 Mytest.db 时,我删除的值(例如 id=2 name=Name2)仍在数据库文件中,尽管它没有出现在该表的数据结果中,但仍然虽然存在。

我想问任何知道这件事的人是这样的:是否有任何其他方法也必须从数据库文件中删除该值,或者这是我对 SQLITE 的 DELETE 选项的错误(我对此表示怀疑)

这就像数据库文件不断收集其中的所有垃圾,而不从其表中删除已删除的值...

非常感谢任何帮助或建议

最佳答案

如果您使用“PRAGMA secure_delete=ON;”然后 SQLite 用零覆盖已删除的内容。参见 https://www.sqlite.org/pragma.html#pragma_secure_delete

即使 secure_delete=OFF,删除的空间也会在您下次 INSERT 时重新使用(并覆盖)以存储新内容。 SQLite 不会泄漏磁盘空间,也不需要 VACUUM 来回收空间。但通常情况下,删除的内容不会被覆盖,因为这会使用额外的 CPU 周期和磁盘 I/O。

关于C++ 和 Sqlite DELETE 查询实际上并没有从数据库文件中删除值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35606496/

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