mysql - mysql数据库唯一ID在一天后被删除后重复
问题描述
这实际上是一个问题,我注意到托管服务器上的 mysql 数据库中有一个模式
所以我有一个表“用户”,
users 有一个唯一的 id “userid”,它会根据每条新记录自动生成 id。
所以我注意到似乎是不正常的事情
我从用户 ID 为“4”的行中删除一条记录
如果记录进入数据库表,则用户 ID“4”会在一天后重新生成。
我认为这不正常
有没有人经历过这个
我的表创建语句
CREATE TABLE `users` (
`User_id` int(255) NOT NULL,
`Username` text NOT NULL,
`Password` text NOT NULL,
`Access` text NOT NULL,
`Email` text NOT NULL,
`business` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `users`
ADD PRIMARY KEY (`User_id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
MODIFY `User_id` int(255) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
我希望一旦一个 id 被删除,它就永远不会重复
谢谢
解决方案
你误解了的意思PRIMARY KEY AUTO_INCREMENT
:
- 它永远不会自动生成已知过去任何时间已经使用的 ID 。
- 它将始终允许手动插入当前 未使用的 ID
所以:如果您删除一个 ID 并手动重新插入它,数据库不会阻止您,但如果您让数据库创建一个 ID,它将永远不会重复。
编辑
允许手动插入曾经删除的 ID 是有充分理由的:没有它,如果不是不可能的话,对表进行部分恢复也会变得更加复杂。
推荐阅读
- oracle - 带有 if 语句的 Oracle 游标错误
- javascript - React Native + Redux Form - 在 maxLength 上转到下一个字段
- c - 在调试 C 代码时处理模棱两可的结构声明
- c# - 在 C# 中从 SoftwareBitmap 创建子位图
- ios - 适用于 iOS 的 Realm DB 引发架构不匹配错误,提供架构版本 84 小于上次设置的版本 86
- c# - IEnumerable
foreach 返回结果中的所有页面;foreach 而不是 for 循环 - sql - 更新中的 SQlite 位运算
- c# - 根据条件编辑 ListBoxItem
- sql-server - 转置列sql server
- visual-studio - Visual Studio 15.7.3 更新后无法加载 Xamarin 解决方案