วิธีเพิ่มตารางฐานข้อมูลดัชนีเป็นปลั๊กอิน


10

ฉันได้สร้างตารางเพิ่มเติมบางส่วนสำหรับปลั๊กอินที่ฉันกำลังพัฒนาและจำเป็นต้องเพิ่มดัชนีในตารางเหล่านี้

WordPress มีวิธีทำอะไร?

การใช้dbDelta()ดูเหมือนจะไม่ทำงานและฉันไม่เห็นข้อผิดพลาดในบันทึก

คำตอบ:


4

คุณสามารถดำเนินการคำสั่ง SQL โดยพลการด้วยwpdb :: query ()รวมถึงคำจำกัดความของข้อมูลเช่น

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 :: prepare ()เพื่อป้องกันการโจมตี SQL Injection

แต่สิ่งนี้ทำให้เกิดคำถาม: คุณสร้างตารางเฉพาะปลั๊กอินได้อย่างไร "ด้วยตนเอง" หรือโดยทางโปรแกรม หากโดยทางโปรแกรมคุณไม่ได้ใช้$wpdb->query()หรือไม่ หากคุณทำมัน "ด้วยตนเอง" แล้วคุณควรสร้างตาราง (และดัชนีของพวกเขา) เมื่อเปิดใช้งานปลั๊กอิน

ดูคำตอบที่ยอดเยี่ยมสำหรับคำถาม WPSE อื่น ๆสำหรับวิธีการเชื่อมต่อกับการเปิดใช้งานปลั๊กอิน (และ / หรือปิดใช้งานและถอนการติดตั้ง) เพื่อทำสิ่งต่าง ๆ เช่นสร้างตารางส่วนตัว


ขอขอบคุณที่ตอบคำถามนี้แม้ว่าจะมีอายุครบ 5 เดือนแล้วก็ตาม ฉันลงเอยด้วยการทำสิ่งนี้ แต่ไม่แน่ใจว่ามันเป็น "ทางที่ถูก" จะเป็นความช่วยเหลือครั้งใหญ่ในครั้งต่อไปที่ฉันพยายามทำสิ่งนี้
Milk

@ นมความสุขของฉัน ฉันคิดว่าคุณอาจจะแก้ปัญหาของคุณแล้วหรือเลิก :-) ฉันตอบมัน (แม้แต่สรรพสิ่ง 5mos หลังจากที่คุณถาม) เพื่อช่วยเหลือผู้อื่นที่มีปัญหาเดียวกันและค้นหา WPSE และพบคำถามของคุณ
พอล 'สแปร์โรว์ฮอว์ก' Biron มี. ค.

3

การใช้ dbDelta ด้านบนของคีย์หลักคุณสามารถรวมคำว่า KEY เพื่อสร้างดัชนีสำหรับคอลัมน์อื่น ๆ :

คุณต้องใช้คีย์คำ KEY แทนคำพ้องความหมาย INDEX และคุณต้องมีคีย์อย่างน้อยหนึ่งรายการ

ตัวอย่างจาก 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 - การสร้างตารางด้วยปลั๊กอิน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.