我的问题是,对于我的数据库中的特定表,即使我使用简单的 INSERT INTO 查询,数据也会更新,而不是在主键已存在时给出"Duplicate"错误 .

表结构:

user_id (PRIMARY_KEY) | email (VARCHAR) | token (VARCHAR) | created (DATETIME)

如果我这样做:

$sql = "INSERT INTO
            email_confirmation (
                user_id,
                email,
                token,
                created
            ) VALUES (
                :user_id,
                :email,
                :token,
                NOW()
            )";
$query = $this->connection->prepare($sql);

$values = [
    ':user_id' => $customer['id'],
    ':email' => $customer['email'],
    ':token' => $token
];

$query->execute($values);

如果主键已经存在,它将更新我的行而不是给我一个错误 . 谁能解释我为什么会这样?