Я опубликовал это на форумах CodeIgniter на днях и не получил ответа, поэтому я пытаюсь здесь.Похоже, что по какой-то причине мое значение автоинкремента в моей таблице увеличивается на 2 вместо 1 после того, как я выполню оператор удаления, а затем оператор вставки.
Вот синтаксис создания для моей таблицы.
CREATE TABLE `brokerage_zip_range` (
`id` int(11) NOT NULL auto_increment,
`zip_code` varchar(10) NOT NULL,
`brokerage_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1
У меня есть код, который выглядит следующим образом в модели:
public function assign_zip_range($brokerage_id, $zip_code) {
$this->db->where('brokerage_id',$brokerage_id);
$this->db->delete('brokerage_zip_range');
$this->db->set('brokerage_id', $brokerage_id);
$this->db->set('zip_code', $zip_code);
$this->db->insert('brokerage_zip_range');
}
(Обратите внимание, что по причинам, по которым я здесь не буду, я не могу просто сделать этооператор обновления).
Проблема, с которой я столкнулся, заключается в том, что хотя этот код выполняется нормально, вставленная запись увеличивается более чем на единицу.Таким образом, до выполнения этого кода запись может выглядеть следующим образом:
id zip_code brokerage_id
7 95202 2
После того, как я запустил код (скажем, с почтовым индексом 92222), теперь он выглядит так:
id zip_code brokerage_id
9 92222 2
Следующее значение автоинкремента должно быть 8, а не 9.
Я делаю что-то не так или это CI?Я укажу, что я пытался запустить этот код сам по себе в CI, то есть никаких других операций вообще не происходит ни до, ни после него.Если это имеет значение (и я сомневаюсь, что это так), я использую CI 2.0 / MySQL 5.01 / PHP 5.3.
ОБНОВЛЕНИЕ!Я НАШЕЛ ОТВЕТ Итак, в итоге получается, что используемый мной класс MY_Router (так что я мог иметь более одного уровня контроллеров, не прибегая к ручной маршрутизации), по-видимому, вызывал все дважды.Я заметил это, когда пошел и работал над совершенно другим разделом кода и увидел, что он вставляет две записи с одинаковыми данными вместо одной.Я удалил этот класс, и теперь все снова хорошо.
Спасибо всем за помощь.