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
Probelma con 'AFTER INSERT, UPDATE ' di un Trigger
lunedì 04 aprile 2011 - 09.41
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
SQL Server 2008 R2
stena
Profilo
| Junior Member
78
messaggi | Data Invio:
lun 4 apr 2011 - 09:41
Salve,
in una tabella ho un trigger AFTER affinche` quando inserisco/modifico un record,
mi aggiorni un campo data, inserendo la data attuale.
AFTER INSERT, UPDATE
AS
BEGIN
UPDATE tabella set campodata = GETDATE() WHERE ...
END
Il problema e` non sapendo a priori quale record viene aggiornato/inserito non ho i parametri per discriminare la condizione 'where'. Il 'campodata' lo devo aggiornare tramite un trigger non potendo
agire sul codice originale dell'applicativo.
Come fare ?
Grazie per eventuali suggerimenti.
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 4 apr 2011 - 09:55
>Il problema e` non sapendo a priori quale record viene aggiornato/inserito
>non ho i parametri per discriminare la condizione 'where'. Il
>'campodata' lo devo aggiornare tramite un trigger non potendo
>agire sul codice originale dell'applicativo.
>
>Come fare ?
Ciao,
Puoi utilizzare le tabelle virtuali INSERTED e DELETED per conoscere lo stato delle righe modificate rispettivamente con i nuovi e vecchi valori.
A titolo di esempio prova a dare un'occhiata a questo post:
https://groups.google.com/group/microsoft.public.it.sql/msg/74f008a0b7b5e948?hl=it
Per quanto riguarda l'INSERT puoi banalmente definire un DEFAULT sulla colonna valorizzandola a GETDATE() o CURRENT_TIMESTAMP, pertanto l'after trigger può essere solamente di UPDATE.
>Grazie per eventuali suggerimenti.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
stena
Profilo
| Junior Member
78
messaggi | Data Invio:
lun 4 apr 2011 - 14:35
modificato trigger, come di seguito e funziona.
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE tabella set campodata = GETDATE()
FROM tabella AS F
JOIN INSERTED AS I
ON F.campochiave = I.campochiave
END
Ciao e grazie.
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 !