2015-08-31 3 views
-1

Как вставить дублирующее обновление ключа в MySQL с помощью первичного ключа - это номер автоматического увеличения? Таким образом, уникальный ключ не может быть указан для новой записи.Codeigniter при повторном обновлении ключа с автоматическим приращением в MySQL

+0

Попробуйте этот ... $ sql = $ this-> db-> insert_string ('table', $ data). 'ON DUPLICATE KEY UPDATE field = значение'; $ this-> db-> query ($ sql); $ id = $ this-> db-> insert_id(); –

+0

Я смущен, что такое переменная $ id? Как они могут знать MySQL дубликат, если я не укажу старый ключ в $ data? Данные могут содержать данные как с старыми, так и с новыми ключами –

+0

@PriskaAprilia Вам нужно вставить данные, идентификатор базы данных (первичный ключ), автоматический прирост? –

ответ

1

ODKU работает не только для ключей PRIMARY, но и работает на всех ключах UNIQUE. Так что вам нужно просто определить еще один уникальный ключ, чтобы поймать дубликаты.

ALTER TABLE `table` ADD UNIQUE (
    `field1` 
/*  
... 
    ,`fieldN` 
*/ 
    ); 
0

Вы должны изменить таблицу своей базы данных. Например, это будет сделать столбец 'ITEMS.itemid' первичный ключ и автоинкрементного:

ALTER TABLE ITEMS CHANGE itemid itemid INT(10)AUTO_INCREMENT PRIMARY KEY; 

Затем, при добавлении новых строк в таблицу не нужно указывать itemid; он будет генерировать автоматически увеличиваемое значение, и вы не получите ошибку «повторного ключа» при обновлении.