whats significa que plain method management index example create php mysql indexing unique-index

significa - Compruebe si un campo tiene la propiedad `UNIQUE` en mysql y PHP



unique index mysql que significa (3)

Ok, lo encontré gracias a @diEcho

public function isUniqueField($tablename, $field, $connection){ $query = $connection->query("SHOW INDEXES FROM $tablename WHERE Column_name=''$field'' AND Non_unique=0"); $query->execute(); if(!$query->fetchAll()){ return false; } return true; }

¿Cómo puedo verificar si un campo de una tabla está establecido como ÚNICO ?

Por ejemplo, tengo una tabla llamada users con un email campo establecido como UNIQUE y una picture campo no establecida como UNIQUE , quiero antes de seleccionar comprobar si el campo está establecido como UNIQUE si no, entonces no hago el SELECT .

Traté de SELECT luego contar el número devuelto de la fila, si es más de 1, entonces no es UNIQUE ,

"SELECT * FROM table WHERE email=''$email''" //...some mysql php line later if($count > 1){ //return nothing }

pero no es eficiente, ¿y si no hay duplicados?

¿Cuál es la mejor manera de verificar si un campo está configurado como UNIQUE en PHP ?

Editar: no duplicado no significa que tiene propiedad UNIQUE


Puede verificar toda la columna indexada con

SHOW INDEX

si hay un índice ÚNICO, entonces no puede ser el valor duplicado en la misma tabla PERO un índice UNICO permite múltiples valores NULOS para las columnas que pueden contener NULO

actualizar

para crear una restricción ÚNICA en una columna (dejar el correo electrónico) use debajo de la consulta

ALTER TABLE `table_name` ADD UNIQUE (`email`);


De la documentación de SHOW INDEX (encontrado por @diEcho):

SHOW INDEX devuelve los siguientes campos:

Non_unique: 0 si el índice no puede contener duplicados, 1 si puede.

Column_name - El nombre de la columna.

Tratar:

SHOW INDEXES FROM $tablename WHERE Column_name=''$field'' AND NOT Non_unique

Tenga en cuenta que esto supone que no existe un índice ÚNICO que abarque varias columnas. Si puede existir, entonces puede excluirlos con una subconsulta.

También tenga en cuenta que los índices desactivados también se muestran en esta consulta (la posibilidad de índices desactivados se menciona en la documentación en la columna Comment ). No parece haber una columna que lo refleje, por lo que es posible que deba analizar la columna Comment si ha deshabilitado los índices.

No hay necesidad de comparar Non_unique a un número - MySQL usa 0 y 1 para booleanos de todos modos