Dsy Network www | forum | my | didattica | howto | wiki | el goog | stats | blog | dona | rappresentanti
Homepage
 Register   Calendar   Members  Faq   Search  Logout 
.dsy:it. : Powered by vBulletin version 2.3.1 .dsy:it. > Didattica > Corsi A - F > Basi di dati ~ comunicazione digitale > progetto, postgresql, trigger.. HELP!
  Last Thread   Next Thread
Author
Thread    Expand all | Contract all    Post New Thread    Post A Reply
Collapse
cash
.simpatizzante.

User info:
Registered: Jun 2003
Posts: 18 (0.00 al dì)
Location: Milano
Corso: Comunicazione Digitale
Anno: 1
Time Online: 6:53:44 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged
progetto, postgresql, trigger.. HELP!

Ciao ragazzi, siamo uno dei gruppi del progetto non frequentanti (palestra).
Come cavolo si fanno i trigger?
sembra che i trigger normali non funzionino con postgres e che bisogna richiamare per forza una procedura. e fin qui, passi.
però sembra che le funzioni che ritornano al trigger non possano ricevere dati in entrata, oppure sì, ma solo text :?: Perchè ho cercato online e ho trovato che si può far riferimento ai dati in entrata usando tg_argv[x] dove x è il numero dell'elenco delle variabili in entrata. ma accetta solo text cazzo!!!

vi prego... se c'è qualcuno, che batta un colpo..

(il mio problema è fare un trigger che, inserendo un nuovo abbonato, se lavoratore, trovi in un altra relazione il valore dello sconto relativo al suo ente e calcoli il prezzo effettivamente pagato...)

(o se qualcuno ci fornisse un trigger esempio da cui costruire gli altri... sarebbe perfetto)

07-10-2008 15:18
Click Here to See the Profile for cash Click here to Send cash a Private Message Find more posts by cash Add cash to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
ildiff
.illuminato.

User info:
Registered: May 2007
Posts: 154 (0.02 al dì)
Location: Milan
Corso: Informatica per la Comunicazione
Anno: 3 + 2
Time Online: 1 Day, 3:06:01: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Se il tuo problema è ottenere un valore numeric per aggiornare una colonna puoi semplicemente fare l'UPDATE dentro il trigger protetto da un IF(tipoabbonato='lavoratore').

Altrimenti se devi semplicemente fare qualcosa del tipo, dato un abbonato,

code:
CREATE OR REPLACE FUNCTION calcola_prezzo ( nome_abbonato CHARACTER VARYING ) RETURNS NUMERIC AS $BODY$ DECLARE prezzo NUMERIC; BEGIN // istruzioni per riempire prezzo RETURN prezzo; END $BODY$ LANGUAGE 'plpgsql';


e poi la chiami come

code:
SELECT * FROM calcola_prezzo('Pippo');


che torna una riga contentente il valore numeric "prezzo".

07-10-2008 16:21
Click Here to See the Profile for ildiff Click here to Send ildiff a Private Message Find more posts by ildiff Add ildiff to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
cash
.simpatizzante.

User info:
Registered: Jun 2003
Posts: 18 (0.00 al dì)
Location: Milano
Corso: Comunicazione Digitale
Anno: 1
Time Online: 6:53:44 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

non ho capito bene...
in postgres mi dà errore di sintassi qualsiasi cosa scrivo (begin,if, referencing...) tranne execute procedure, che normalmente ho visto solo con un "returns trigger" dentro.
ma mettiamo che creo una funzione tipo la tua e ritorno "prezzo". nel trigger come dò il valore a all'attributo in questione?
new.attributo=execute procedure calcola_prezzo(abbonato, ente)?
o qualcosa del genere?

mi dà errore di sintassi pure sul new!!!

07-10-2008 17:09
Click Here to See the Profile for cash Click here to Send cash a Private Message Find more posts by cash Add cash to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
ildiff
.illuminato.

User info:
Registered: May 2007
Posts: 154 (0.02 al dì)
Location: Milan
Corso: Informatica per la Comunicazione
Anno: 3 + 2
Time Online: 1 Day, 3:06:01: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Ora ho capito.

devi fare qualcosa del tipo

code:
CREATE FUNCTION nome_funzione() RETURNS TRIGGER AS $BODY$ DECLARE var1 NUMERIC; BEGIN ... // recupero il prezzo SELECT MAX(prezzo) INTO var1 FROM tabella_prezzi WHERE chiave = ... //in modo che torni solo una riga //metto il prezzo a posto nella tabella NEW.prezzo = var1; ... RETURN NEW; END $BODY$ LANGUAGE 'plpgsql'; CREATE TRIGGER nome_trigger BEFORE INSERT ON tabella FOR EACH ROW EXECUTE PROCEDURE nome_funzione();


perchè puoi assegnare dei valori al NEW solo se il trigger è di tipo BEFORE

07-10-2008 18:47
Click Here to See the Profile for ildiff Click here to Send ildiff a Private Message Find more posts by ildiff Add ildiff to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
cash
.simpatizzante.

User info:
Registered: Jun 2003
Posts: 18 (0.00 al dì)
Location: Milano
Corso: Comunicazione Digitale
Anno: 1
Time Online: 6:53:44 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Grazie mille! Invece come si fa a tirar fuori che giorno della settimana è data una data... ;)

13-10-2008 13:34
Click Here to See the Profile for cash Click here to Send cash a Private Message Find more posts by cash Add cash to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
ildiff
.illuminato.

User info:
Registered: May 2007
Posts: 154 (0.02 al dì)
Location: Milan
Corso: Informatica per la Comunicazione
Anno: 3 + 2
Time Online: 1 Day, 3:06:01: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Dovrebbe essere qualcosa del tipo:

code:
SELECT EXTRACT(DOW FROM TIMESTAMP '2008-10-13');


il risultato è un numero che varia tra 0 (domenica) e 6 (sabato). Nel caso dell'esempio tornerebbe 1 perchè oggi è lunedì.

13-10-2008 13:50
Click Here to See the Profile for ildiff Click here to Send ildiff a Private Message Find more posts by ildiff Add ildiff to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
cash
.simpatizzante.

User info:
Registered: Jun 2003
Posts: 18 (0.00 al dì)
Location: Milano
Corso: Comunicazione Digitale
Anno: 1
Time Online: 6:53:44 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Grandissimo!!! Su internet non si trova un cavolo di niente!!!

13-10-2008 15:27
Click Here to See the Profile for cash Click here to Send cash a Private Message Find more posts by cash Add cash to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
ARIEL
.grande:maestro.

User info:
Registered: Jul 2005
Posts: 636 (0.09 al dì)
Location: milano
Corso: Comunicazione digitale
Anno: Dottoressa!!!
Time Online: 12 Days, 7:36:22 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

A me invece succede che per parecchi triggers quando provo a testarli facendo una insert in postgresql mi viene fuori il seguente errore:

"Missing FROM - clause entry for table "nome_tabella"
CONTESTO: PL/pgsql function

Non so da cosa dipenda! Qualcuno può aiutarmi?
Grazie

13-10-2008 21:34
Click Here to See the Profile for ARIEL Click here to Send ARIEL a Private Message Find more posts by ARIEL Add ARIEL to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
ildiff
.illuminato.

User info:
Registered: May 2007
Posts: 154 (0.02 al dì)
Location: Milan
Corso: Informatica per la Comunicazione
Anno: 3 + 2
Time Online: 1 Day, 3:06:01: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Originally posted by cash
Grandissimo!!! Su internet non si trova un cavolo di niente!!!


Falso. Basta saper cercare. Trovi tutto sulla documentazione di postgres.

13-10-2008 21:39
Click Here to See the Profile for ildiff Click here to Send ildiff a Private Message Find more posts by ildiff Add ildiff to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
All times are GMT. The time now is 11:44.    Post New Thread    Post A Reply
  Last Thread   Next Thread
Show Printable Version | Email this Page | Subscribe to this Thread | Add to Bookmarks

Forum Jump:
Rate This Thread:

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
 

Powered by: vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento | Licenze | Thanks | Syndacate
Pagina generata in 0.036 seconds (78.64% PHP - 21.36% MySQL) con 26 query.