일부 레코드가 이미있는 테이블에 필드 이름이 'unique_no'입니다. unique_no 필드 레코드에
- 10000 - 99999와
사이의 숫자 여야합니다. 'unique_no'필드에 레코드를 선택하고 싶습니다.10000 - 99999 사이에 있어야하며 unique_no 필드 레코드에 이미 존재하지 않는 필드에 레코드를 삽입하십시오.
그래서이 방법을 제안 해주세요. 미리 감사드립니다.
일부 레코드가 이미있는 테이블에 필드 이름이 'unique_no'입니다. unique_no 필드 레코드에
- 10000 - 99999와
사이의 숫자 여야합니다. 'unique_no'필드에 레코드를 선택하고 싶습니다.10000 - 99999 사이에 있어야하며 unique_no 필드 레코드에 이미 존재하지 않는 필드에 레코드를 삽입하십시오.
그래서이 방법을 제안 해주세요. 미리 감사드립니다.
unique_no
필드를 AUTO_INCREMENT로 설정하십시오.unique_no
필드에 NULL을 지정하십시오.이 최적화되어야하지만, 기본적으로는 같은 (의사를) 코드가 필요합니다 : 테이블 필드에 키 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);
코드가 의사 코드로 작성된 것일 수 있습니다. PHP에서 mysql을 어떻게 사용하는지 잘 모르기 때문입니다. – Electronick
어느 부분에서 문제가 있습니까? – RedFilter
해당 필드의 고유 색인 인 경우 'INSERT IGNORE INTO ...'를 사용할 수 없습니다. 고유 한 행이 삽입되지 않습니다. – piotrekkr
점검 제약 조건이 제대로 작동합니다. –