I have got a plpgsql function: CREATE FUNCTION nueva_llamada(integer, integer) RETURNS integer
as DECLARE _operadora_id ALIAS FOR $1; _actividad_id ALIAS FOR $2; _contacto_id integer; BEGIN -- BEGIN; SELECT min(id) INTO _contacto_id FROM contactos WHERE contactos.operadora_id IS NULL AND contactos.actividad_id = _actividad_id; UPDATE contactos SET operadora_id = _operadora_id WHERE id = _contacto_id; -- COMMIT; INSERT INTO llamadas (contacto_id, operadora_id, fecha) VALUES (_contacto_id, _operadora_id, now()); RETURN _contacto_id; END and it works right, but I need atomic execution from --BEGIN and --COMMIT, and manual says it is not possible to have transactions in PL/pgSQL procedures :-( May be with LOCK TABLE? -- Rafa Couto (caligari) mailto:[EMAIL PROTECTED] urgentes (sólo texto): [EMAIL PROTECTED] PGP 0x30EC5C31 [E6BF 11EF FE55 38B1 CF7E 9380 58E5 9FA3] ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]