He creado algunas tablas adicionales para un complemento que estoy desarrollando y necesito agregar índices a estas tablas.
¿Cuál es la forma en que WordPress hace esto?
El uso dbDelta()no parece funcionar, y no veo ningún error en los registros.
He creado algunas tablas adicionales para un complemento que estoy desarrollando y necesito agregar índices a estas tablas.
¿Cuál es la forma en que WordPress hace esto?
El uso dbDelta()no parece funcionar, y no veo ningún error en los registros.
Puede ejecutar sentencias SQL arbitrarias con wpdb :: query () , incluidas las declaraciones de definición de datos, p. Ej.
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 SQL arbitrario , si la declaración que le pasa contiene CUALQUIER entrada del usuario, entonces debe usar wpdb :: prepare () para protegerse contra los ataques de inyección SQL.
Pero esto plantea la pregunta: ¿cómo creó sus tablas específicas de complementos? ¿"Manualmente" o programáticamente? Si programáticamente, ¿no lo usaste $wpdb->query()? Si lo hizo "manualmente", realmente debería crear las tablas (y sus índices) tras la activación del complemento.
Vea la excelente respuesta a esta otra pregunta WPSE sobre cómo conectarse a la activación del complemento (y / o desactivación y desinstalación) para hacer cosas como crear tablas privadas.
Con dbDelta, además de una CLAVE PRIMARIA, puede incluir la palabra CLAVE para crear un índice para otras columnas:
Ejemplo de schema.php en core:
Fuente: codex - Crear tablas con complementos
fuente