MySQL 自动增量是否有可能意外偏移

MySQL is there a chance of accidental offset of automatic increment

如果同时插入到两个 mysql 表中,是否有可能另一个用户可以同时插入以使表偏移?

例如假设:(在php)

$conn = new mysqli($servername, $username, $password, $dbname);

$sql = "INSERT INTO Name (user_id, name, email)
VALUES (DEFAULT, 'User name', 'john@example.com')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$sql = "INSERT INTO Location (user_id, addressline1, addressline1, postcode)
VALUES (DEFAULT, '123 street', 'anytown, country', '123456')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();

如果 'John' 运行 这与 'Bob' 同时进行,是否有可能为约翰的 Name 提供自动递增 ID 1 和他的 Location 被赋予 2,因为 Bob 的 Location 被赋予了 1,尽管他的 Name 被赋予了 2.

有点难以解释。

在您的场景中,鉴于您发布的代码,您担心的事情是可能的,并且随着您获得越来越多的用户肯定会发生。

使用我的sql我的 insert_id 将为您解决这个问题。正是出于这个原因,最后一次成功插入查询的自动增量 ID 存储在这里。将您的第二个 sql 查询更改为此。

$sql = "INSERT INTO Location (user_id, addressline1, addressline1, postcode)
VALUES ({$conn->insert_id}, '123 street', 'anytown, country', '123456')";

这不再是问题。