gpt4 book ai didi

mysql - 如何从数据库中取出数据 "disappear"? MySQL

转载 作者:行者123 更新时间:2023-11-29 08:39:27 27 4
gpt4 key购买 nike

我有一个有点愚蠢的问题。问题是我的程序必须具有从数据库中删除数据的功能。是的,这不是真正的问题。但是我怎样才能删除数据而不会有其他人看到某些内容已被删除的危险。

User Table:
U_ID U_NAME
1 Chris
2 Peter

OTHER TABLE
ID TIMESTAMP FK_U_D
1 2012-12-01 1
2 2012-12-02 1

ID 是自动递增的,所以如果我删除其中一个,就会出现间隙。此外,时间戳也比之前的行大,因此是升序的。

我想让 ID 为 1 的数据从用户的个人资料 (U_ID 1) 中消失。

如果我删除它,就会出现间隙。如果我只是将 FK_U_ID 更改为 2(Peter),那就很明显了,因为当我插入数据时,有 20 或 30 个数据行具有相同的 U_ID...所以很明显发生了修改。

如果我将 FK_U_ID 设置为 NULL --> 就像我将其更改为另一个 U_ID 时一样。

有什么解决方案可以完成这项工作吗?我知道如果除了我之外没有人可以访问数据库,那就没问题了。但以防万一,如果有人控制了我的程序,那么应该不会明显看出已经进行了修改。

所以我们开始吧。

最佳答案

对于 ID 间隙问题,您可以使用 GUIDs正如 @SLaks 所建议的,但是您不能使用 native RDBMS auto_increment,这意味着您必须创建 GUID 并在创建时将其与其余记录数据一起插入。当然,您并不真正需要 ID 是全局唯一的,您可以只存储 20 个字符或其他字符的随机字符串,但是您必须执行数据库读取以查看该 ID 是否被采用并重复(递归)这个过程直到你找到一个未使用的 ID...可能会非常费力。

关于mysql - 如何从数据库中取出数据 "disappear"? MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14260575/

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