Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Come individuare il cambiamento di un field specifico in una tabella?
lunedì 25 gennaio 2010 - 17.20
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
paquito_ita
Profilo
| Senior Member
224
messaggi | Data Invio:
lun 25 gen 2010 - 17:20
Ciao,
ho sviluppato un'applicazione web che regolarmente notifica tramite email se un task (associato alla tabella "Task" e assegnato al relativo utente) viene modificato.
Ora e' stato richiesto di inoltrare la notifica solamente se alcuni campi vengono modificati e non altri. Ad esempio se il titolo o il responsabile del task viene modificato --> notifica, ma se lo "stato" del task viene cambiato da "in progresso" a "terminato" --> NON notificare.
Attualmente la business logic era semplice perché confrontavo la data dell'ultima notifica con quella della modifica del task (field Task.ModifiedOn) e nel caso il task fosse risultato modificato inviavo la notifica.
Ora tuttavia come posso riconoscere che la modifica fatta riguarda un campo o un altro?
Grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 26 gen 2010 - 01:34
>Ciao,
Ciao
>Ora tuttavia come posso riconoscere che la modifica fatta riguarda un campo o un altro?
l'unica che mi viene è che quando vai ad inserire il task controlli se è cambiato rispetto alla versione sul database.
Che RDBMS utilizzi?
>Grazie
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
paquito_ita
Profilo
| Senior Member
224
messaggi | Data Invio:
mar 26 gen 2010 - 09:12
Ciao Alx,
>>Ora tuttavia come posso riconoscere che la modifica fatta riguarda un campo o un altro? l'unica che mi viene è che quando vai ad inserire il task controlli
>se è cambiato rispetto alla versione sul database.
Quella era anche la mia. Prima di fare l'update sul server, verifico quali campi interessa la modifica e inizializzo un nuovo campo booleano nella tabella Task. Questo perchè la notifica avviene ogni giorno alle 17:30 in base alle modifiche e non real time. Senza questo campo, una volta aggiornato il record, non saprei piu' se inviare o meno la notifica al momento opportuno.
Oppure tu vedi un modo alternativo?
>Che RDBMS utilizzi?
SQL server 2008
Grazie di nuovo
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 26 gen 2010 - 21:09
>Oppure tu vedi un modo alternativo?
Io vedo un trigger DML di UPDATE che tramite una IF UPDATE() va a verificare quale colonna è stata modificata, scrivendo una riga in una tabella di appoggio.
In modo asincrono prevederei un job che spazzoli la coda inviando se è il caso l'e-mail di notifica.
>Grazie di nuovo
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 26 gen 2010 - 23:25
>Io vedo un trigger DML di UPDATE che tramite una IF UPDATE()
>va a verificare quale colonna è stata modificata, scrivendo una
>riga in una tabella di appoggio.
>In modo asincrono prevederei un job che spazzoli la coda inviando
>se è il caso l'e-mail di notifica.
Purtroppo non sopporto i trigger, e quindi li evito molto spesso
. Preferisco legarmi ad una stored procedure che implementi la stessa logica.
In effetti però, questa soluzione è più indolore di quelle precedentemente descritte..
paquito_ita, a te la scelta
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
paquito_ita
Profilo
| Senior Member
224
messaggi | Data Invio:
mer 27 gen 2010 - 08:50
Grazie mille per i consigli!
Ora ne discutero' meglio con il project leader e il DB manager.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !