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

Problemas con Rules

Estas en el tema de Problemas con Rules en el foro de PostgreSQL en Foros del Web. Hola, estoy empezando con PostgreSQL por un trabajo para la facultad, estoy teniendo problemas con las Rules: Tengo que hacer una “Rules” que en el ...
  #1 (permalink)  
Antiguo 28/10/2014, 21:30
 
Fecha de Ingreso: junio-2013
Ubicación: Jujuy
Mensajes: 9
Antigüedad: 11 años, 5 meses
Puntos: 0
Pregunta Problemas con Rules

Hola, estoy empezando con PostgreSQL por un trabajo para la facultad, estoy teniendo problemas con las Rules:
Tengo que hacer una “Rules” que en el caso de una venta con matrícula de odontólogo 2145 automáticamente le asigne $500 como total de operación.

La Rule que hice que me quedo:
Cita:
CREATE OR REPLACE RULE InsertOper AS ON INSERT TO Tb_Detalle_Operacion
WHERE New.MatriculaOdontologo = 2145
DO INSTEAD (UPDATE Tb_Detalle_Operacion SET TotalOper = 500);
Pero al ejecutarla me modifica en todos los registros de la Tabla Detalle Operacion el campo TotalOper, y ya le he dados vueltas y no puedo lograr que me cumpla la condición del la Matricula.
  #2 (permalink)  
Antiguo 29/10/2014, 07:45
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Problemas con Rules

Creería que la condición inicial, aplica unicamente para la ejecución de la regla, mas no para la sentencia que se va a ejecutar.

Debes incluir esta condición en la sentencia.

Código SQL:
Ver original
  1. CREATE OR REPLACE RULE InsertOper AS ON INSERT TO Tb_Detalle_Operacion
  2. WHERE NEW.MatriculaOdontologo = 2145
  3. DO ALSO (UPDATE Tb_Detalle_Operacion SET TotalOper = 500 WHERE MatriculaOdontologo=2145);

La opción INSTEAD indica que cuando se cumpla la regla, se debe ejecutar dicha sentencia en lugar de la original, por lo que no te dejaría ingresar el registro original.

En el ejemplo que te doy, esta con la opción ALSO que permite ingresar la original y adicional a eso, se ejecuta la condición que quieras.

Pruebala y nos cuentas
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: sql
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 10:04.