mysql - SQL:假设,如果将不合适的数字添加到唯一标识符列,会发生什么情况?

标签 mysql sql database

让我们这样想,假设我在 MYSQL 中有一个名为“names”的表,如下所示:

id| name
1 | Bob
2 | Sally
3 | Anne

其中“id”是表的唯一标识符,并且随着每添加一行而自动递增。

假设我以某种方式设法用一个完全不符合顺序的 id 抛出一行,如下所示:

id| name
1 | Bob
2 | Sally
3 | Anne
20| John

随机行之后的行会从新的 id 20 继续吗? (例如,添加的下一行的 ID 为 21),还是它们仍会从 ID 3 继续? (例如,添加的下一行的 ID 为 4)

以前在SQl中出现过这种情况吗?

最佳答案

他们将继续使用 21,禁止重复。否则,当您到达 19 并且下一个插入的行应该变成 20 时,您就会遇到问题,而这已经存在了。

顺便说一句,插入这样一行并不复杂。只需在 INSERT 上提供特定值,而不是遗漏自动增量列或交出 NULL

除非您手动设置 next-autoincrement 值,否则 MySQL 会尽一切努力确保不会遇到冲突。因此,如果您插入一个大值,它会将 this+1 保存为下一个自动增量值。

关于mysql - SQL:假设,如果将不合适的数字添加到唯一标识符列,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22053310/

相关文章:

mysql - 合并包含两个具有相同值的单独字段的行

php - 使用语句选择所有内容,然后回显特定行

mysql - 显示 mySQL 数据库中唯一记录的总数

html - sql中如何获取奇数节点和偶数节点的值

mysql - 问卷解密数据库ER图

php - 空白 int 字段将 0 保存到 DB

mysql - 在一个语句中计算多个

sql - where 子句中的 Oracle 案例

database - Sybase中的游标有多慢

php - 检查行中的特定整数 WHERE user = $name