Limitar el número de registros en una tabla con MYSQL

B

Hola!

Tengo una tabla en la cual almaceno 4 imágenes con sus respectivos id, pero no voy almacenar mas.
Si elimino una foto que tiene la id 2 y la quiero cambiar por otra no quiero que me inserte el registro 5 sino que se inserte en ese hueco que queda libre, y a demás quiero, si se puede, limitar la tabla a que sólo puedan insertarse 4 registros.

No se si todo esto es posible a ver si alguien puede ayudarme.

Muchas gracias.

Un saludo.

jonnand

Como respuesta a tu segundo problema: Limitar la tabla a 4 registros. Puedes usar un trigger:

DELIMITER $$
CREATE TRIGGER table_size_trigger
BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
SELECT COUNT(*) INTO @count FROM table1;
IF @count >= 4 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Table size limit reached';
END IF;
END$$
DELIMITER ;

Si quieres que la nueva entrada sustituya una ID "vacía", tendrás que modificar el código para que cuando detecte menos de 4 entradas inserte la entrada en la ID correspondiente.

Un saludo.

Merkury

Como consejo, cuando insertes una nueva imagen, en vez de hacer INSERT INTO haz UPDATE basado en el ID.

Para mantener los cuatro registros que comentas, yo lo que haria seria un cronjob que me eliminase los registros que no fuesen los que necesitas (pero si vas a user Ids, haciendo updates, no deberia ser un problema).

1
Fyn4r

Y si no usas una base de datos par eso? Quiero decir, me parece matar moscas a cañonazos

1 respuesta
Merkury

#4 Hombre, si quiere hacerlo editable, no es mala idea, siempre puede ampliarlo para incluir fecha de modificacion, , descripcion, metainfo, permisos para sustituir, etc.

Haciendo un upload directamente al servidor no tienes control realmente, es mas facil sin duda, pero da menos flexibilidad.

Usuarios habituales