help postgresql: new rules

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

help postgresql: new rules

claudia.santese
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

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
474 iscritti al 18.9.2010