2013-10-10 4 views
0

, который более безопасен для mes для восстановления и сортировки первичного ключа индексации, избегая ненужного обновления по всей базе данных? Можете ли вы показать мне какие-нибудь примеры?Первичный ключ восстановительных индексов

Я просто хочу, что первичные ключи были постоянными и dynamic.I просто хочу, что первичные ключи были ограничения и динамичнее

пс: База данных MySQL


  User's Table 

|| user_id || user_first_name || user_last_name

#1   Alexandre    Doria 
#2   Ilya     Bursov 
#3   Anybody     Anybody 

Так что, если я удалить строку # 2, и вставить новую строку, первичный ключ # 3 строки дублируются.

Мой PHP код здесь:

$ user_id_cont = mysql_query ("выберите 'user_id' от пользователя"); $ user_id = mysql_num_rows ($ user_id_cont) +1;

+0

первичные ключи всегда сортируются в MySQL, что вы имеете в виду путем восстановления ? –

+0

Всегда после удаления строки первичный ключ дублируется. Как получить индекс последующего первичного ключа равен индексу последней удаленной строки? – AlexDoria

+0

Я не уверен, что вы правильно используете терминологию, вы не можете получить индекс последующего первичного ключа. Вы можете получить значение нового автоинкрементного первичного ключа, автоинкрементные ключи не дублируются, если строки удалены –

ответ

0

Это абсолютно неправильно рассчитать первичные ключи, как это сделано в коде

Прежде всего - изменить user_id столбца быть первичный ключ (он будет уникальным тоже тогда), а также установить его можно auto_increment, так что ваши таблица создать заявление должно быть:

create table sample_users (
`user_id` int unsigned not null auto_increment, 
`first` varchar(255), 
`last` varchar(255), 
primary key (`user_id`) 
); 

дальше, вам нужно вставить данные в таблицу, так что вы можете просто вставить его:

INSERT into `sample_users` (`first`, `last`) values('fname', 'lname'); 
INSERT into `sample_users` (`first`, `last`) values('fname2', 'lname2'); 
... 

MySQL сгенерирует Ассигнования на ate user_id для каждой строки, и даже если вы удалите некоторые из них - mysql все равно предоставит вам уникальные значения

дополнительный случай - если вам нужно знать, какой идентификатор генерируется mysql, вы можете использовать PHP mysql_insert_id или MySQL LAST_INSERT_ID функции для этого

только для уведомления: неправильный метод, но он будет работать для «школьного проекта», измените код:

$user_id_cont = mysql_query("select max('user_id') from user"); 
$user_id = mysql_fetch_array($user_id_cont, MYSQL_NUM); 
$user_id = $user_id[0]+1; 
Смежные вопросы