【发布时间】:2019-08-08 18:47:44
【问题描述】:
我为待办事项设置了一个表格,主要列是hash 和owner。我希望将其设置为 hash 根据 owner 的值自动递增,如果删除了一个值,所有 hash 值将自动更新为新的递增值。
假设有 3 个用户,为简单起见,我将他们在 owner 中的 ID 设置为 1、2 和 3。每个用户有 3 个项目,表格如下所示
hash owner
1 1
2 1
3 1
1 2
2 2
3 2
1 3
2 3
3 3
如果我要为所有者 1 添加一个新条目,它会自动将哈希值增加到 4,创建这样的表
hash owner
1 1
2 1
3 1
4 1
1 2
2 2
3 2
1 3
2 3
3 3
然后,如果我运行 DELETE FROM todo WHERE hash = 2 AND owner = 1,链接到所有者 1 的条目的哈希值将更改为 1 | 2 | 3,而不是 1 | 3 | 4
如果我随后使用INSERT INTO todo SET owner = 4 添加一个新用户,他们将获得自己的“哈希集”。
这是可能的还是我要求的太多了?
我想这样做的唯一原因是每个用户都可以拥有自己易于记忆的哈希值,而不是像jIUxdi3XjaDv这样的东西
【问题讨论】:
-
除非您提供哈希,否则 innodb 自动增量不会这样做。
-
然而,myisam 可以做到这一点。
-
@PeterHe 你知道有什么指南可以帮助我在 myisam 中重新创建它吗?
-
您将哈希定义为 int not null auto_increment、owner int not null 和其他列。然后在所有者和哈希列上定义一个 PK。请记住,myisam 不支持交易。