[Gfoss] help postgresql: new rules

claudia.santese a cooperativaimpronte.it claudia.santese a cooperativaimpronte.it
Sab 6 Nov 2010 17:36:45 CET


Ciao a tutti,
ho creato una serie di semplici regole in postgresql per poter fare delle
interrogazioni spaziali su alcune tabelle postgis (PER SEMPIO:tab A, tab
b,
tab c).

Ho bisogno di aggiungere in una tabella(costi)un valore di "costo" se una
delle varie interrogazioni (st_intersect, st_crosses,ecc..)risponde alla
query almeno una volta con un risultato positivo (true).
Per farla più semplice vi faccio un esempio.
 
inserisco nella tabella A (che racchiude tutte le interrogazioni
spaziali)il risultato della query spaziale.

INSERT INTO tab_a(col_a) 
 SELECT ST_intersects(point_b.the_geom, polygon_c.the_geom) FROM tab b,
tab c;

tramite la regola seguente riesco ad avere nella "tabella_costi" per ogni
risultato "true" un costo associato (per sempio il costo=400)

CREATE OR REPLACE RULE insert_costi AS
    ON INSERT TO tab_a
   WHERE new.col_a = true DO INSTEAD INSERT INTO tab_costi
(col_costi_intersects) 
  VALUES (400); 

Ovviamente questa regola inserisce un costo 400 alla tabella costi ogni
volta che la query interscts = true.

Avrei bisogno però di avere una sola risposta costo=400 nella
tabella_costi anche se la query intersects risponde true più volte.
Ho provato ad inserire alla regola LIMIT 1 ma non funziona.
Sapete dirmi come potrei fare?
Spero di esser stata chiara.

Immagino che non sia il modo più efficiente per fare queste elaborazioni,
ma non sono riuscita a creare una funzione plpgsql che sostituisca tutto
ciò (a tal proposito se sapete suggerirmi dei tutorial sulle funzioni
plpgsql ve ne sarei grata).

Grazie in anticipo!

Claudia



Maggiori informazioni sulla lista Gfoss