반응형
테이블의 필드가 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
반응형
'MySql' 카테고리의 다른 글
MySQL PHP 및 MySql로 열 이름 변경 (0) | 2021.01.16 |
---|---|
MySQL 경고 : mysql_fetch_array () : 제공된 인수가 유효한 MySQL 결과가 아닙니다. 40 행 (0) | 2021.01.16 |
MySQL : 매일의 합계 (0) | 2021.01.16 |
MySQL 날짜 함수가 미만으로 작동하지 않습니다. (0) | 2021.01.16 |
MySQL 여러 단어에 대한 mysql 일치 (0) | 2021.01.15 |
댓글