Câu trả lời:
Bạn có thể thực thi các câu lệnh SQL tùy ý với wpdb :: query () , bao gồm Báo cáo định nghĩa dữ liệu, vd
function
create_index ()
{
global $wpdb ;
$sql = "CREATE INDEX my_index ON {$wpdb->prefix}my_table (my_column)" ;
$wpdb->query ($sql) ;
return ;
}
Lưu ý: Bởi vì $wpdb->query()
có thể thực thi SQL tùy ý , nếu câu lệnh bạn chuyển đến nó chứa BẤT K input dữ liệu người dùng nào, thì bạn nên sử dụng wpdb :: ready () để bảo vệ chống lại các cuộc tấn công SQL Injection.
Nhưng điều này đặt ra câu hỏi: làm thế nào bạn tạo các bảng dành riêng cho plugin của mình? "Thủ công" hay lập trình? Nếu lập trình, bạn đã không sử dụng $wpdb->query()
? Nếu bạn đã thực hiện "thủ công", thì bạn thực sự nên tạo các bảng (và chỉ mục của chúng) khi kích hoạt plugin.
Xem câu trả lời tuyệt vời để này câu hỏi WPSE khác cho làm thế nào để móc vào kích hoạt plugin (và / hoặc vô hiệu hóa và gỡ bỏ cài đặt) để làm những việc như tạo bảng tin.
Sử dụng dbDelta, trên đầu trang của PRIMARY KEY, bạn có thể bao gồm từ KEY để tạo chỉ mục cho các cột khác:
Bạn phải sử dụng từ khóa KEY thay vì từ đồng nghĩa INDEX và bạn phải bao gồm ít nhất một KEY.
Ví dụ từ lược đồ.php trong lõi:
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;
Nguồn: codex - Tạo bảng bằng plugin