답변:
데이터 정의 명령문을 포함하여 wpdb :: query () 를 사용하여 임의의 SQL 문을 실행할 수 있습니다.
function
create_index ()
{
global $wpdb ;
$sql = "CREATE INDEX my_index ON {$wpdb->prefix}my_table (my_column)" ;
$wpdb->query ($sql) ;
return ;
}
참고 : 때문에 $wpdb->query()
실행할 수있는 임의의 SQL을 당신이 그것에 통과 문이 포함 된 경우, 모든 사용자 입력을 한 후 사용한다 wpdb가) (준비 :: SQL 주입 공격으로부터 보호 할 수 있습니다.
그러나 이것은 질문을 제기합니다 : 플러그인 특정 테이블을 어떻게 만들었습니까? "수동으로"또는 프로그래밍 방식으로? 프로그래밍 방식으로 사용하지 $wpdb->query()
않습니까? "수동으로"수행 한 경우 플러그인 활성화시 실제로 테이블 (및 해당 인덱스)을 작성해야합니다.
개인 테이블 생성과 같은 작업을 수행하기 위해 플러그인 활성화 (및 비활성화 및 제거)에 연결하는 방법에 대해서는 이 다른 WPSE 질문에 대한 훌륭한 답변을 참조하십시오 .
PRIMARY KEY 위에 dbDelta를 사용하여 KEY라는 단어를 포함시켜 다른 열에 대한 색인을 작성할 수 있습니다.
동의어 INDEX가 아닌 키워드 KEY를 사용해야하며 하나 이상의 KEY를 포함해야합니다.
핵심 schema.php의 예 :
CREATE TABLE $wpdb->termmeta (
meta_id bigint(20) unsigned NOT NULL auto_increment,
term_id bigint(20) unsigned NOT NULL default '0',
meta_key varchar(255) default NULL,
meta_value longtext,
PRIMARY KEY (meta_id),
KEY term_id (term_id),
KEY meta_key (meta_key($max_index_length))
) $charset_collate;
출처 : codex-플러그인으로 테이블 만들기