> >> Gilberto: >> >> 2017-04-05 16:46 GMT+02:00 Gilberto Castillo >> <gilberto.casti...@etecsa.cu>: >>>> 2017-04-05 16:22 GMT+02:00 Pedro PG <pedr...@outlook.com>: >>>>> Lo que deseo es agregar una restriccion CHECK que solo permita >>>>> modificar >>>>> datos de la tupla si y solo si liquidado es NULL. >>>> >>>> Igual estoy un poco oxidado, pero las restricciones check lo que hacen >>>> es comprobar un juego de valores de la tupla, no miran si vienen de >>>> update o de lo que sea. >>>> >>>>> 1) Cuando se inserta un registro el campo liquidado siempre sera NULL >>>>> (esto >>>>> es correcto). >>>>> 2) Desde un procedimiento externo actualizare liquidado (esto tambien >>>>> es >>>>> correcto). >>>>> 3) Si deseo actualizar el registro, solo debe permitirme si el campo >>>>> liquidado es NULL (aqui mi problema). >>>> >>>> Probablemente puedes hacer eso con un trigger. De todas formas, salvo >>>> que estes haciendo el control con roles y mucho cuidado, porque no >>>> pones un 'where liquidadoull' extra en los updates? Tambien podrias >>>> probar con un "create rule x on update to table where OLD.liquidado is >>>> not null instead do nothing' o algo asi, pero te puede dar problemas >>>> si quieres revertir una fila a liquidadoull. Al fin y al cabo, si >>>> alguien puede cambiar liquidado a null probablemente pueda hacer >>>> not-null->null->update->null. >>> >>> Yo Usaría UPSERT >> >> Iluminanos, porfa. Hacer eso con upsert seria un truco fantastico.
insert into mytabla as a (campo1, liquidado) values ('valor1',1),('valor2',null) on conflict (liquidado) do update set liquidado = a.liquidado + EXCLUDED.liquidado where a.liquidado IS NULL; -- Saludos, Gilberto Castillo ETECSA, La Habana, Cuba - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda