Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/10/2009, 16:33
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Limitar cantidad de datos

con un trigger o controlar la inserción de los datos con una función.

por ejemplo

Código sql:
Ver original
  1. pruebas=> \d table2
  2.      Tabla ½public.table2╗
  3.  Columna | Tipo | Modificadores
  4. ---------+------+---------------
  5.  a       | text |
  6.  
  7. pruebas=> CREATE OR REPLACE FUNCTION insertar_limitado(text)
  8. pruebas->   RETURNS text AS
  9. pruebas-> $BODY$
  10. pruebas$> DECLARE
  11. pruebas$> contador_registros record;
  12. pruebas$> mensaje text;
  13. pruebas$> BEGIN
  14. pruebas$> SELECT INTO contador_registros COUNT(*) AS conteo FROM table2;
  15. pruebas$> IF contador_registros.conteo >= 10 THEN
  16. pruebas$>    mensaje='Imposible insertar mas registros';
  17. pruebas$> ELSE
  18. pruebas$>    INSERT INTO table2 VALUES($1);
  19. pruebas$>    mensaje='registro insertado';
  20. pruebas$> END IF;
  21. pruebas$> RETURN mensaje;
  22. pruebas$> END
  23. pruebas$> $BODY$
  24. pruebas->   LANGUAGE 'plpgsql' VOLATILE;
  25. CREATE FUNCTION
  26. pruebas=> SELECT insertar_limitado('a');
  27.  insertar_limitado
  28. --------------------
  29.  registro insertado
  30. (1 fila)
  31.  
  32. pruebas=> SELECT insertar_limitado('b');
  33.  insertar_limitado
  34. --------------------
  35.  registro insertado
  36. (1 fila)
  37.  
  38. pruebas=> SELECT insertar_limitado('c');
  39.  insertar_limitado
  40. --------------------
  41.  registro insertado
  42. (1 fila)
  43.  
  44. pruebas=> SELECT insertar_limitado('d');
  45.  insertar_limitado
  46. --------------------
  47.  registro insertado
  48. (1 fila)
  49.  
  50. pruebas=> SELECT insertar_limitado('e');
  51.  insertar_limitado
  52. --------------------
  53.  registro insertado
  54. (1 fila)
  55.  
  56. pruebas=> SELECT insertar_limitado('f');
  57.  insertar_limitado
  58. --------------------
  59.  registro insertado
  60. (1 fila)
  61.  
  62. pruebas=> SELECT insertar_limitado('g');
  63.  insertar_limitado
  64. --------------------
  65.  registro insertado
  66. (1 fila)
  67.  
  68. pruebas=> SELECT insertar_limitado('h');
  69.  insertar_limitado
  70. --------------------
  71.  registro insertado
  72. (1 fila)
  73.  
  74. pruebas=> SELECT insertar_limitado('i');
  75.  insertar_limitado
  76. --------------------
  77.  registro insertado
  78. (1 fila)
  79.  
  80. pruebas=> SELECT insertar_limitado('j');
  81.  insertar_limitado
  82. --------------------
  83.  registro insertado
  84. (1 fila)
  85.  
  86. pruebas=> SELECT insertar_limitado('k');
  87.         insertar_limitado
  88. ----------------------------------
  89.  Imposible insertar mas registros
  90. (1 fila)

el registro k sería el numero 11 y mostraría un mensaje de impedimento para insertar mas datos

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming