Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Limitación para registros en una tabla (MySQL)

Estas en el tema de Limitación para registros en una tabla (MySQL) en el foro de Mysql en Foros del Web. Saludos, Estoy haciendo una base de datos utilizando MySQL. Quisera que cuando mi tabla llegue a tener exactamente 20 registros la base de datos no ...
  #1 (permalink)  
Antiguo 01/08/2012, 09:45
 
Fecha de Ingreso: julio-2012
Mensajes: 6
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta Limitación para registros en una tabla (MySQL)

Saludos,

Estoy haciendo una base de datos utilizando MySQL. Quisera que cuando mi tabla llegue a tener exactamente 20 registros la base de datos no siga registrando mas entradas y automaticamente desconecte al usuario de la base de datos. Espero me puedan ayudar.

Gracias,
  #2 (permalink)  
Antiguo 01/08/2012, 09:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Limitación para registros en una tabla (MySQL)

No es posible desde la base de datos.
Por un lado, no hay modo de restringir la cantidad de registros de una tabla, ni aún usando los parámetros propios del CREATE TABLE. Si revisas el manual verás que MAX_ROWS no lo hace.
Cita:
MAX_ROWS
Máximo número de registros que planea almacenar en la tabla. No es un límite absoluto, sino un indicador que la tabla debe ser capaz de almacenar al menos estos registros.
Por otro lado, MySQL no tiene recursos para "expulsar" un usuario logueado correctamente.
No es la primera vez que alguien pregunta esto, pero en todos los casos hemos terminado aconsejándole la misma solución: Manejalo en el programa, por programación. MySQL no puede hacer nada como lo que quieres.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 01/08/2012, 10:16
 
Fecha de Ingreso: julio-2012
Mensajes: 6
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Limitación para registros en una tabla (MySQL)

Que mal. Pensé que podía utilizar algo así como:

$total = mysql_num_rows()

if($total>=20)
{
echo "La sección no está disponible"
}

esto no es útil. Perdona mi ignorancia, pero no soy diestro en php y mysql estoy por primera vez en esto.
  #4 (permalink)  
Antiguo 01/08/2012, 10:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Limitación para registros en una tabla (MySQL)

Pregunta en el Foro de PHP, seguro que sabrán guiarte.
Como te dije, ya otros han preguntado lo mismo, así que es probable que alguien te pueda aportar ideas desde la programación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 02/08/2012, 05:14
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Limitación para registros en una tabla (MySQL)

Mysql es muy limitado a la hora de procesar estructuras if-else y no existen condicionantes en UPDATE

SELECT IF((SELECT COUNT(*) FROM tabla)=134,'es 134','no es 134')

sin embargo lo siguiente sólo sería posible para consultas que retornan un sólo registro

SELECT IF((SELECT COUNT(*) FROM tabla)=134,(SELECT COUNT(*) FROM tabla),'no es 134')
ó
SELECT IF((SELECT COUNT(*) FROM tabla)=134,4*5,'no es 134')

Pero no es capaz de hacer

SELECT IF((SELECT COUNT(*) FROM tabla)=134,(INSERT INTO...),'no es 134')

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #6 (permalink)  
Antiguo 02/08/2012, 05:20
Usuario no validado
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 16
Respuesta: Limitación para registros en una tabla (MySQL)

En Oracle recuerdo que alguna vez condicione inserts mediante triggers.

He encontra esto en este enlace:
[URL="http://forums.mysql.com/read.php?99,172748,235353#msg-235353"]http://forums.mysql.com/read.php?99,172748,235353#msg-235353[/URL]

Código SQL:
Ver original
  1. CREATE TRIGGER myTrigger BEFORE INSERT ON myTable
  2. FOR EACH ROW BEGIN
  3. IF CHECK=TRUE THEN
  4. //its ok
  5. ELSE
  6. SET NEW = NULL; //raise error AND cancel INSERT
  7. END IF;
  8. END;

Supongo que en lugar de ese "check=true" pones un "(select count(*) from tabla)<[Limite de registros]" y conseguís que funcione.

O talvez haga falta declarar una variable y meter el resultado del count en ella primero.

Prueba y me cuentas.
  #7 (permalink)  
Antiguo 02/08/2012, 05:29
Usuario no validado
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 16
Respuesta: Limitación para registros en una tabla (MySQL)

Cita:
Iniciado por wipitillo Ver Mensaje
Que mal. Pensé que podía utilizar algo así como:

$total = mysql_num_rows()

if($total>=20)
{
echo "La sección no está disponible"
}

esto no es útil. Perdona mi ignorancia, pero no soy diestro en php y mysql estoy por primera vez en esto.

Código PHP:
Ver original
  1. // Parámetros para conexión a base de datos
  2. $db_host = 'TU_SERVIDOR';
  3. $db_database = 'TU_BASE_DE_DATOS';    
  4. $db_user = 'TU_USUARIO';
  5. $db_password = 'TU_PASSWORD';
  6.  
  7. $db = mysql_connect($db_host, $db_user, $db_password)
  8.       or die('ERROR: No se connecto a la base de datos.');
  9. mysql_select_db($db_database)or die('ERROR:'.mysql_error());
  10.  
  11. // Se ejecuta la consulta del count
  12. $qry = 'select count(*) from tabla';
  13. $result = mysql_query($qry, $db);  
  14. $row = mysql_fetch_row($result);
  15. $registros = $row[0];
  16. mysql_free_result($result);        
  17. mysql_close($db);    
  18.  
  19. if($registros >=20)
  20. {
  21.     echo "La sección no está disponible"
  22.     mysql_close($db);    
  23.     return;
  24. }
  25.  
  26. // NO OLVIDES CERRAR LA SESION después.
  #8 (permalink)  
Antiguo 02/08/2012, 05:38
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Limitación para registros en una tabla (MySQL)

Que pruebe a crear un procedimiento almacenado y le pase como parámetro de la función el resultado de la consulta COUNT.

Es demasiado engorroso, es más sencillo con PHP.

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Etiquetas: tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:05.