2013-10-10 7 views
0

중 mes 안전한 복구 및 정렬 색인 기본 키, 불필요한 업데이트를 방지하는 데이터베이스를 통해? 어떤 예를 보여줄 수 있습니까?인덱스를 복구 기본 키

난 그냥 싶어 그 기본 키는 기본 키 제한 조건 및 dinamic

PS했다 상수 dynamic.I 단지 싶어했다 : MySQL의 데이터베이스


  User's Table 

|| user_id || user_first_name || 내가 새 행을 2 행을 삭제하고 삽입하는 경우, 그래서

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

을 user_last_name, # 3 행의 기본 키는 중복됩니다. 여기

내 PHP 코드 :

$ user_id_cont =는 mysql_query ("사용자로부터 'USER_ID'를 선택"); $ user_id = mysql_num_rows ($ user_id_cont) +1;

+0

기본 키는 항상 MySQL의 정렬됩니다

$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; 
, 당신은 무엇을 복구 의미합니까 ? –

+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이 appropri 생성합니다 mysql은 여전히 ​​고유 한 값을 제공합니다.

추가 사례 - mysql이 어떤 ID를 생성했는지 알아야 할 경우 PHP mysql_insert_id 또는 MySQL을 사용할 수 있습니다. LAST_INSERT_ID 단지 통지에 대한 그

에 대한 기능 : 잘못된 방법이지만, "학교 프로젝트"에 대한 작업에 코드를 변경합니다 :