MySQL唯一索引错误仍然自动增加主索引

时间:2016-12-06 09:22:52

标签: mysql

我有这样的简单表格

CREATE TABLE `adverts` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `original_id` int(10) unsigned NOT NULL COMMENT 'Original project advert id',
 `owner_id` int(10) unsigned NOT NULL,
 `project_id` int(10) unsigned NOT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `original_id` (`original_id`,`owner_id`,`project_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1

当我尝试执行

INSERT INTO `adverts` (`id`, `original_id`, `owner_id`, `project_id`) VALUES (NULL, '1', '1', '');

多次因违反唯一索引而出错,但问题是auto_increment仍然上升,因此我可以有一行id为1,第二行有(例如)id为100。

执行查询时我使用PHP

$query = 'INSERT INTO `adverts` (`original_id`, `owner_id`, `project_id`) VALUES (?, ?, ?);';
if ($stmt = $sql->prepare($query)) {
// integer, integer, integer
$stmt->bind_param('iii', $input['id'], $input['owner_id'], $projects[$input['project_name']]);
$stmt->execute();

switch ($stmt->errno) {
    case 1062:
    throw new \Exceptions\Persistence\UniqueConstraintViolationException;
    break;
}

$result = $stmt->insert_id;
$stmt->close();
}

0 个答案:

没有答案
相关问题