Jawaban:
Anda dapat menjalankan pernyataan SQL sewenang - wenang dengan wpdb :: query () , termasuk Pernyataan Definisi Data, mis
function
create_index ()
{
global $wpdb ;
$sql = "CREATE INDEX my_index ON {$wpdb->prefix}my_table (my_column)" ;
$wpdb->query ($sql) ;
return ;
}
Catatan: Karena $wpdb->query()
dapat mengeksekusi SQL arbitrer , jika pernyataan yang Anda berikan berisi input pengguna APAPUN , maka Anda harus menggunakan wpdb :: prepar () untuk melindungi terhadap serangan SQL Injection.
Tetapi ini menimbulkan pertanyaan: bagaimana Anda membuat tabel khusus plugin Anda? "Secara manual" atau secara terprogram? Jika terprogram, apakah Anda tidak menggunakannya $wpdb->query()
? Jika Anda melakukannya "secara manual", maka Anda harus membuat tabel (dan indeksnya) saat aktivasi plugin.
Lihat jawaban yang sangat baik untuk pertanyaan WPSE ini lainnya untuk cara menghubungkan ke aktivasi plugin (dan / atau menonaktifkan dan menghapus instalan) untuk melakukan hal-hal seperti membuat tabel pribadi.
Menggunakan dbDelta, di atas KUNCI UTAMA, Anda dapat memasukkan kata KUNCI untuk membuat indeks untuk kolom lain:
Anda harus menggunakan kata kunci KEY daripada sinonim INDEX dan Anda harus memasukkan setidaknya satu KUNCI.
Contoh dari schema.php dalam inti:
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;