Si limito el "update" a una fila concreta:
Código SQL:
Ver originalUPDATE parcelas SET id_municipio=(SELECT municipio.id FROM municipio WHERE municipio.nombre=parcelas.municipio) WHERE parcelas.id='1' ;
Y funciona. Pero no sé cómo hacerlo con todas las filas.
Sobre esa base, se me ocurre esta función, pero hay algo que no va: (me da error en la variable 'x')
Código SQL:
Ver originalCREATE OR REPLACE FUNCTION actualizar_id_mun() RETURNS void AS
$BODY$
DECLARE
x INT;
BEGIN
x:=1;
WHILE (x<SELECT COUNT(*) FROM socios) LOOP
UPDATE parcelas SET id_municipio=(SELECT municipio.id FROM municipio WHERE municipio.nombre=parcelas.municipio) WHERE parcelas.id=x;
x++;
END LOOP;
END;
$BODY$
LANGUAGE SQL VOLATILE NOT LEAKPROOF
COST 100;