时间:2019-05-04 16:58:44

标签: mysql

这实际上是一个问题,我注意到托管服务器上mysql数据库中的模式

所以我有一个“用户”表,

用户具有唯一的ID“用户ID”,该ID会根据每条新记录自动生成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删除后就不会重复

谢谢

1 个答案:

答案 0 :(得分:1)

您误解了PRIMARY KEY AUTO_INCREMENT的含义:

  • 它将从不自动生成一个在已知过去的任何时间已经获取过的ID。
  • 它将始终允许手动插入未使用的ID(当前

因此:如果删除ID并手动将其重新插入,则数据库不会阻止您,但是如果您让数据库创建ID,则它将永远不会重复。

编辑

有充分的理由允许手动插入曾经删除的ID:如果没有它,则对表进行部分还原将是很困难的,甚至是不可能的。