karplus
12-11-2008, 00:31
Ciao a tutti, devo fare la seguente cosa: avendo una tabella con una colonna di date, ho bisogno di fare un trigger che si attivi quando la data appena inserita é la prima per quell'anno.
Sembra banale da fare, infatti io ho fatto un trigger la cui condizione per l'attivazione funziona così:
1) la nuova data deve essere maggiore di tutte quelle precedentemente inserite
2) si va a cercare se ci sono date che hanno come anno l'anno della data che ho dato in input, e se il risultato ritornato dal relativo count é zero, allora si può attivare il trigger.
Il mio problema é il fatto che debba usare sql STRETTAMENTE standard. Come database uso postgresql, quindi non posso usare il comodo select extract year from anno, idem per i to_char che hanno come argomento la data ma trasformata in stringa.
Come diamine faccio a discriminare in base all'anno se, che io sappia, non esiste una sintassi standard relativa a tutti i linguaggi sql, che mi estragga il solo anno.
So che c'è una procedura molto più semplice di quella che ho elencato sopra per vedere se la data che si sta immettendo é la prima del suo anno, ma non mi viene veramente in mente, confido in voi. :muro:
ps purtropp come ovvio la prima condizione non basta, perchè se inserisco lo 01-01-2009 il trigger si attiva ok, ma si attiva anche se inserisco il 02-01-2009. :(
Sembra banale da fare, infatti io ho fatto un trigger la cui condizione per l'attivazione funziona così:
1) la nuova data deve essere maggiore di tutte quelle precedentemente inserite
2) si va a cercare se ci sono date che hanno come anno l'anno della data che ho dato in input, e se il risultato ritornato dal relativo count é zero, allora si può attivare il trigger.
Il mio problema é il fatto che debba usare sql STRETTAMENTE standard. Come database uso postgresql, quindi non posso usare il comodo select extract year from anno, idem per i to_char che hanno come argomento la data ma trasformata in stringa.
Come diamine faccio a discriminare in base all'anno se, che io sappia, non esiste una sintassi standard relativa a tutti i linguaggi sql, che mi estragga il solo anno.
So che c'è una procedura molto più semplice di quella che ho elencato sopra per vedere se la data che si sta immettendo é la prima del suo anno, ma non mi viene veramente in mente, confido in voi. :muro:
ps purtropp come ovvio la prima condizione non basta, perchè se inserisco lo 01-01-2009 il trigger si attiva ok, ma si attiva anche se inserisco il 02-01-2009. :(