본문 바로가기
MySql

MySQL 필드에 mysql 및 PHP에서`UNIQUE` 속성이 있는지 확인

by 베이스 공부 2021. 1. 16.
반응형

테이블의 필드가 UNIQUE 로 설정되어 있는지 어떻게 확인할 수 있나요?

예를 들어, email 필드가 UNIQUE 로 설정되고 picture 필드가 다음으로 설정되지 않은 users 라는 테이블이 있습니다. UNIQUE , 선택하기 전에 필드가 UNIQUE 로 설정되어 있는지 확인하고 그렇지 않은 경우 SELECT 를 수행하지 마십시오.

SELECT 를 시도한 다음 반환 된 행 수를 계산했습니다. 1 개 이상이면 UNIQUE 가 아닙니다.

"SELECT * FROM table WHERE email='$email'"
//...some mysql php line later
if($count > 1){
    //return nothing
}

그러나 그것은 효율적이지 않습니다. 중복이 없다면 어떨까요?

PHP 에서 필드가 UNIQUE 로 설정되어 있는지 확인하는 가장 좋은 방법은 무엇입니까?

편집 : 중복이 없다고해서 UNIQUE 속성이있는 것은 아닙니다.

 

해결 방법

 


SHOW INDEX는 다음 필드를 반환합니다.

Non_unique-인덱스에 중복을 포함 할 수없는 경우 0, 가능한 경우 1입니다.

Column_name-열 이름입니다.

시험:

SHOW INDEXES
FROM $tablename
WHERE Column_name='$field'
AND NOT Non_unique

이는 여러 열에 걸쳐있는 UNIQUE 인덱스가 없다고 가정합니다. 가능한 경우 하위 쿼리를 사용하여 제외 할 수 있습니다.

또한 비활성화 된 인덱스도이 쿼리에 표시됩니다 (비활성화 된 인덱스의 가능성은 Comment 열의 문서에 언급되어 있음). 이를 반영하는 열이없는 것 같으므로 색인을 비활성화 한 경우 Comment 열을 구문 분석해야 할 수 있습니다.


 

참조 페이지 https://stackoverflow.com/questions/14049407

 

 

반응형

댓글