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

Eliminar el 1er registro al insertar el registro 50

Estas en el tema de Eliminar el 1er registro al insertar el registro 50 en el foro de Mysql en Foros del Web. Buenas, estoy tratando de crear un trigger (sin mucho exito debo confesar ) que elimine el primer registro de la tabla cuando se inserte el ...
  #1 (permalink)  
Antiguo 22/02/2010, 08:37
 
Fecha de Ingreso: julio-2009
Mensajes: 90
Antigüedad: 14 años, 8 meses
Puntos: 4
Pregunta Eliminar el 1er registro al insertar el registro 50

Buenas, estoy tratando de crear un trigger (sin mucho exito debo confesar ) que elimine el primer registro de la tabla cuando se inserte el registro numero 50. es una especie de log del sistema y solo quiero conservar los ultimos 50, estuve buscando en el foro pero las respuestas que encontré no logro llevarlas a la practica efectivamente.

cualquier luz será agradecida
  #2 (permalink)  
Antiguo 22/02/2010, 08: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, 4 meses
Puntos: 2658
Respuesta: Eliminar el 1er registro al insertar el registro 50

Programalo en un Stored Procedure.
No puedes hacerlo en un TRiGGER, porque el TRIGGER bloquea su tabla, y no se puede hacer ninguna operación sobre ella hasta que el TRIGGER no termine.
Es una medida de seguridad para que no se produzcan operaciones contradictorias (como la que tu planteas) en un mismo ciclo.
Imagínate, sino, que alguien borrase el registro que tú estuvieses editando...

Por eso se bloquea la tabla al ejecutar el trigger.
__________________
¿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 22/02/2010, 09:48
 
Fecha de Ingreso: julio-2009
Mensajes: 90
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: Eliminar el 1er registro al insertar el registro 50

pero al programarlo en un SP tendria que mandarlo a llamar desde mi codigo, no se ejecutaria automaticamente no?

existe alguna otra forma de restringir la cantidad de registros de una tabla?
  #4 (permalink)  
Antiguo 22/02/2010, 10:06
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, 4 meses
Puntos: 2658
Respuesta: Eliminar el 1er registro al insertar el registro 50

Infortunadamente, no puedes evitar llamarlo, pero si podrías bloquear la tabla para el resto de los usuarios mientras haces todo.
Y no. MyQSL no tiene forma de restringir la cantidad de registros de una tabla, la cláusula al respecto en el CREATE no restringe, por lo que tendrás que manejarlo de otra forma:
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.
__________________
¿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 22/02/2010, 10:33
 
Fecha de Ingreso: julio-2009
Mensajes: 90
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: Eliminar el 1er registro al insertar el registro 50

gracias por tus consejos, siempre acertados, lo he resuelto haciendo lo sgte (quizas algo rebuscado pero efectivo):

selecciono el primer id_interno de los ultimos 50 registros y lo almaceno en una variable

Código MySQL:
Ver original
  1. id="SELECT id_interno FROM registro ORDER BY id_interno DESC LIMIT 50,1;"

y luego elimino asi

Código MySQL:
Ver original
  1. Sql = "DELETE FROM registro WHERE id_interno<=" & id & ";"
  2. Bd.Execute Sql

Etiquetas: eliminar, registro
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 12:44.