Cómo agregar un índice a la tabla de base de datos de complementos

9

He creado algunas tablas adicionales para un complemento que estoy desarrollando y necesito agregar índices a estas tablas.

¿Cuál es la forma de WordPress para hacer esto?

El uso de dbDelta() no parece funcionar, y no veo ningún error. en los registros.

    
pregunta Milk 30.09.2016 - 03:44

2 respuestas

4

Puede ejecutar arbitrary sentencias de SQL con wpdb :: query () , incluidas las declaraciones de definición de datos, por ejemplo,

function
create_index ()
{
    global $wpdb ;

    $sql = "CREATE INDEX my_index ON {$wpdb->prefix}my_table (my_column)" ;

    $wpdb->query ($sql) ;

    return ;
}

Nota: Debido a que $wpdb->query() puede ejecutar arbitrariamente SQL, si la declaración que le pasa contiene CUALQUIERA información del usuario, debe use wpdb :: prepare () para protegerse contra los ataques de Inyección de SQL.

Pero esto plantea la pregunta: ¿cómo creó las tablas específicas de sus complementos? ¿"Manualmente" o programáticamente? Si fue programático, ¿no usaste $wpdb->query() ? Si lo hizo "manualmente", entonces realmente debería crear las tablas (y sus índices) al activar el complemento.

Vea la excelente respuesta a esta otra pregunta de WPSE sobre cómo conectar la activación del complemento (y / o la desactivación y desinstalación) para hacer cosas como crear tablas privadas.

    
respondido por el Paul 'Sparrow Hawk' Biron 08.03.2017 - 03:00
3

Al usar dbDelta, encima de una CLAVE PRINCIPAL, puede incluir la palabra CLAVE para crear un índice para otras columnas:

  

Debe usar la palabra clave KEY en lugar de su sinónimo INDEX y debe incluir al menos una KEY.

Ejemplo de schema.php en el núcleo:

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;

Fuente: codex - Creando tablas con complementos

    
respondido por el froger.me 13.09.2018 - 01:46

Lea otras preguntas en las etiquetas