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

Limitar el numero máximo de registros en una tabla

Estas en el tema de Limitar el numero máximo de registros en una tabla en el foro de SQL Server en Foros del Web. Hola amigos, quisiera saber si SQL Server se puede limitar el numero de registros que puede tener una tabla, lo necesito para lo siguiente. - ...
  #1 (permalink)  
Antiguo 07/04/2014, 15:14
Avatar de gokufast  
Fecha de Ingreso: abril-2007
Mensajes: 540
Antigüedad: 17 años
Puntos: 3
Limitar el numero máximo de registros en una tabla

Hola amigos, quisiera saber si SQL Server se puede limitar el numero de registros que puede tener una tabla, lo necesito para lo siguiente.

- quiero registrar el ingreso de un usuario al sistema al autenticarse con su usuario y contraseña, que tambien me registre la fecha y hora, para tener un registro de los usuarios que realmente estan usando el sistema.

obviamente esta tabla va a crecer bastante porque un usuario puede ingresar varias veces al sistema y dependiendo de la cantidad de usuarios creceria mucho mas, por lo que quisiera saber si una tabla puede limitarse a tener digamos 5mil registros borrando los mas antiguos a medida que los nuevos se van registrando.

por código se como hacerlo pero si en la base de datos se puede es mejor.

un saludo.
  #2 (permalink)  
Antiguo 07/04/2014, 16:04
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Limitar el numero máximo de registros en una tabla

No hay tal "magia", tu debes crearla por código, ejecutando un JOB nocturno (00:00) que te haga la limpieza de los registros mas antiguos
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 07/04/2014, 16:37
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: Limitar el numero máximo de registros en una tabla

Esta es una pregunta recurrente, ya han consultado por lo mismo en Oracle, MySQL y hasta en VB.Net, y la respuesta siempre sigue siendo la misma: Programar algo que lo evite o los elimine. Pero no se consigue con restricciones de BBDD.
Lo que resulta poco claro para quienes preguntan es la lógica que siguen los DBMS, y que no es el de una tabla de Excel, o una tabla de HTML. La idea que ronda en los DBMS es que una tabla debe poder contener todos los registros que se puedan almacenar, no limitarlos. Se busca potenciar, no reducir. Una empresa nunca busca hacer "tablitas", sino almacenar todo lo que necesita.
No tiene ningún sentido diseñar un motor de bases de datos, para luego restringir sus capacidades a una escala banal. En alguna forma es como adquirir una Ferrari, o un Porsche, para luego ponerle un limitador de velocidad y que no se pueda acelerar a más de 40. Es un desperdicio de capacidades.
En general suelen preguntar eso porque no quieren tomarse el tiempo de crear las validaciones de restricción, sino que la base les de algo servido. Y la cosa no funciona así.
Te recomiendo enfáticamente que no desperdicies el tiempo buscando esa "solución" y la generes programáticamente. Será siempre mejor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 07/04/2014, 16:37
Avatar de gokufast  
Fecha de Ingreso: abril-2007
Mensajes: 540
Antigüedad: 17 años
Puntos: 3
Respuesta: Limitar el numero máximo de registros en una tabla

:) bueno ni modo, a traducir un código que tenia en PHP y MySQL, gracias por las respuestas.
Pensé que al haber tablas temporales probablemente podría haber tablas con limite de registros.

Porque lo mejor es no crear código "saturando" al sistema con querys, pudiendo tener la opción de que lo pueda hacer el DBMS mas rápidamente.

Por ejemplo los procedimientos almacenados, vistas, Triggers, etc. hacen las cosas mas rápidamente que hacerlas mediante código.

Última edición por gokufast; 07/04/2014 a las 16:45
  #5 (permalink)  
Antiguo 07/04/2014, 17:14
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: Limitar el numero máximo de registros en una tabla

Cita:
Pensé que al haber tablas temporales probablemente podría haber tablas con limite de registros.
Las tablas temporales, en diferentes DBMS suelen tener cierto límite, pero no es debido a restricciones de tabla, sino al espacio de memoria que usan. Como muchos otros recursos que acceden a memoria temporal, están limitadas al espacio asignado a ella. Pero sigue sin ser restricciones a la tabla como tabla.
Cita:
Porque lo mejor es no crear código "saturando" al sistema con querys, pudiendo tener la opción de que lo pueda hacer el DBMS mas rápidamente.
Precisamente ese es un error conceptual. Lo que estás buscando es que el DBMS dispare una excepción por límite de registros... Con lo que en realidad lo estás obligando a hacer más validaciones que lo que le llevaría hacer un SELECT COUNT().
Que no las veas, no implica que no existan.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 08/04/2014, 07:38
Avatar de gokufast  
Fecha de Ingreso: abril-2007
Mensajes: 540
Antigüedad: 17 años
Puntos: 3
Respuesta: Limitar el numero máximo de registros en una tabla

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Las tablas temporales, en diferentes DBMS suelen tener cierto límite, pero no es debido a restricciones de tabla, sino al espacio de memoria que usan. Como muchos otros recursos que acceden a memoria temporal, están limitadas al espacio asignado a ella. Pero sigue sin ser restricciones a la tabla como tabla.
Si existen tablas temporales que se vacian al terminar la sesion, pues no es descabellado pensar que se podria limitar la cantidad de registros de una tabla, hay cosas que pueden hacer los DBMS que uno no sabe pero si no preguntas pues quedarias con la duda, pero esta claro que por lo menos el SQL Server no tiene tablas con esta característica.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Precisamente ese es un error conceptual. Lo que estás buscando es que el DBMS dispare una excepción por límite de registros... Con lo que en realidad lo estás obligando a hacer más validaciones que lo que le llevaría hacer un SELECT COUNT().
Que no las veas, no implica que no existan.
En todo caso la velocidad entre una consulta por DBMS vs codigo es considerablemente menor en el DBMS, porque obviamente no tarda lo mismo hacer un query complejo por código a que se lo haga en el DBMS en una vista.

Finalizando agradecer la aclaración y ni que hacer hay cosas que tienes que hacerlo por código si o si y esta es una de ellas.
  #7 (permalink)  
Antiguo 08/04/2014, 08:16
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Limitar el numero máximo de registros en una tabla

Cita:
Iniciado por gokufast Ver Mensaje
Si existen tablas temporales que se vacian al terminar la sesion, pues no es descabellado pensar que se podria limitar la cantidad de registros de una tabla, hay cosas que pueden hacer los DBMS que uno no sabe pero si no preguntas pues quedarias con la duda, pero esta claro que por lo menos el SQL Server no tiene tablas con esta característica.
Hasta lo que se no existe un DBMS que tenga un limite en el numero de renglones en una tabla, quizas te limite el tamaño por el tamaño de tu disco, ahora lo que dices la tabla temporal se vacia al finalizar sesion porque como su nombre lo dice es temporal y lo que tu pides es algo que se puede hacer con codigo....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: limitar, numero, registros, server, siguiente, sql, 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 06:25.