On Tue, Nov 16, 2010 at 21:02, Osvaldo Kussama <[email protected]>wrote:
> Em 16 de novembro de 2010 17:22, Eloi Ribeiro <[email protected]> > escreveu: > > > > Com esta ultima alteração os resultados são os mesmos. > > Nao existe nenhuma outra dependência, ao actualizar uma coordenada a > > outra deve ser automaticamente modificada. > > Eloi > > > IF (NEW.x100 IS NOT NULL) THEN > NEW.x = NEW.x100/100; > END IF; > > É isso? Calcular um novo x em função de x100? > > ==== > > CREATE OR REPLACE FUNCTION funcao_teste() RETURNS trigger AS > $$ > BEGIN > IF (TG_OP = 'INSERT') THEN > IF (NEW.x IS NOT NULL) THEN > NEW.x100 = NEW.x*100; > ELSE > NEW.x = NEW.x100/100; > END IF; > ELSE > IF (TG_OP = 'UPDATE') THEN > IF (NEW.x IS NOT NULL) THEN > NEW.x100 = NEW.x*100; > ELSE > IF (NEW.x100 IS NOT NULL) THEN > NEW.x = NEW.x100/100; > END IF; > END IF; > END IF; > END IF; > RETURN NEW; > END; > $$ LANGUAGE plpgsql; > > > Osvaldo > ______________________________________________ > Tens razão tinha ai um erro, mas mesmo assim com ultimo UPDATE (ver mais a baixo) não se obtém o resultado esperado. Não entendo o que está mal... INSERT INTO sch_temp.teste(x) VALUES(1); INSERT INTO sch_temp.teste(x100) VALUES (200); SELECT * FROM sch_temp.teste; 1;1;100 2;2;200 Resultado esperado. UPDATE sch_temp.teste SET x = 3 WHERE x = 2; SELECT * FROM sch_temp.teste; 1;1;100 2;3;300 Resultado esperado. UPDATE sch_temp.teste SET x100 = 200 WHERE x = 3; SELECT * FROM sch_temp.teste; 1;1;100 2;3;300 Resultado NÃO esperado. Deveria ser: 1;1;100 2;2;200 Eloi
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
