2012-03-26 2 views
3

일부 레코드가 이미있는 테이블에 필드 이름이 'unique_no'입니다. unique_no 필드 레코드에
- 10000 - 99999와
사이의 숫자 여야합니다. 'unique_no'필드에 레코드를 선택하고 싶습니다.10000 - 99999 사이에 있어야하며 unique_no 필드 레코드에 이미 존재하지 않는 필드에 레코드를 삽입하십시오.

그래서이 방법을 제안 해주세요. 미리 감사드립니다.

+0

어느 부분에서 문제가 있습니까? – RedFilter

+0

해당 필드의 고유 색인 인 경우 'INSERT IGNORE INTO ...'를 사용할 수 없습니다. 고유 한 행이 삽입되지 않습니다. – piotrekkr

+0

점검 제약 조건이 제대로 작동합니다. –

답변

1
  1. unique_no 필드를 AUTO_INCREMENT로 설정하십시오.
  2. 테이블 설정 옵션 AUTO_INCREMENT = 10000;
  3. 새 레코드를 삽입하려면 unique_no 필드에 NULL을 지정하십시오.
0

이 최적화되어야하지만, 기본적으로는 같은 (의사를) 코드가 필요합니다 : 테이블 필드에 키 UNIQUE가있는 경우

// lock table to prevent duplicates 
mysql_lock_table('table'); 
do { 
    $random = rand(10000, 99999); 
} while (mysql_count_rows("SELECT count(*) FROM table WHERE unique_no = %value", $random) > 0); 
$row['unique_no'] = $random; 
mysql_insert($row); 
// unlock table 
mysql_unlock_table('table'); 

, 당신은 영향을받는 행 INSERT IGNORE이 가치를 사용할 수 있습니다

// lock table to prevent duplicates 
do { 
    $random = rand(10000, 99999); 
    $row['random'] = $random; 
    $result = mysql_insert_ignore($row); 
} while (mysql_affected_rows($result) == 0); 
+0

코드가 의사 코드로 작성된 것일 수 있습니다. PHP에서 mysql을 어떻게 사용하는지 잘 모르기 때문입니다. – Electronick

관련 문제