> 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 NOT NULL; No lo probé, pero esa es la idea. -- 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