首页 > 解决方案 > 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 被删除,它就永远不会重复

谢谢

标签: mysql

解决方案


你误解了的意思PRIMARY KEY AUTO_INCREMENT

  • 永远不会自动生成已知过去任何时间已经使用的 ID 。
  • 它将始终允许手动插入当前 未使用的 ID

所以:如果您删除一个 ID 并手动重新插入它,数据库不会阻止您,但如果您让数据库创建一个 ID,它将永远不会重复。

编辑

允许手动插入曾经删除的 ID 是有充分理由的:没有它,如果不是不可能的话,对表进行部分恢复也会变得更加复杂。


推荐阅读