Estimados, la verificación del año me parce que no está bien, pero entendí la idea y debería ser : ALTER TABLE tabla_pagos ADD CONSTRAINT verif_info_pago CHECK (ano_info <= ano_pago);
Sin embargo, la verificación del mes_info es distinta, ya que debe validar que sea menor que mes_pago, sólo si el ano_info es igual al ano_pago, si ano_info es menor, mes_info puede tomar cualquier valor. En definitiva lo que se debe comprobar es que no se pague algo que obviamente no esté informado en meses previos. Un ejemplo, si estoy en Mayo de 2014 (mes pago 5, año pago 2014) puedo pagar cualquier mes previo del 2014, y los meses informados podrian ser 1, 2, 3 ó 4 (todos los meses info son menor que 5). Pero si los meses de información son de años anteriores (Ej. 2012) pueden tomar cualquier valor del 1 al 12 y en ese caso si pueden ser iguales o mayores que mes pago 5 (Ej informacion de octubre 2012 a pagar en mayo de 2014, entonces mes info 10 y mes pago 5) Saludos, El 26 de mayo de 2014, 13:32, Martín Marqués <mar...@2ndquadrant.com>escribió: > El día 26 de mayo de 2014, 14:07, Sergio Valdes Hurtado > <svh.pg...@gmail.com> escribió: > > Estimados, > > tengo una tabla de la cual se reciben datos externos mediante cargas > masivas > > de datos (es un legacy y no podemos cambiar los formatos) que tiene los > > siguientes campos: > > run (int4) > > ano_pago (int2) > > mes_pago (int2) > > ano_info (int2) > > mes_info (int2) > > Tampoco pueden cambiar los nombres de las columnas de las tablas? Ano? > > > Necesito hacer una validación tal que: > > * ano_info no debe ser mayor que ano_pago > > ALTER TABLE tabla_pagos ADD CONSTRAINT verif_info_pago CHECK (ano_info > > ano_pago); > > > * mes_info debe ser menor que mes_pago si ano_pago = ano_info > > Idem anterior, pero con estos otros campos. > > > > -- > Martín Marqués http://www.2ndQuadrant.com/ > PostgreSQL Development, 24x7 Support, Training & Services > -- Sergio Valdés H.