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
CLR Trigger - Quando Sono Richiamati?
venerdì 29 febbraio 2008 - 11.30
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
lolic
Profilo
| Newbie
37
messaggi | Data Invio:
ven 29 feb 2008 - 11:30
Sto implementando dei Trigger in C# ma non riesco a trovare un'indicazione di quando il Trigger è invocato.
E' possibile ad esempio utilizzare nell'attribute SqlTrigger le espressioni After - Before? Se sì come?
Nel caso in cui il trigger è invocato dopo l'evento di Insert,Update,Delete se io eseguo una query nella medesima tabella a cui è associato il trigger i dati, esito della query, sono aggiornati?
Ringrazio Anticipatamente
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
ven 29 feb 2008 - 17:32
>Sto implementando dei Trigger in C# ma non riesco a trovare un'indicazione
>di quando il Trigger è invocato.
>E' possibile ad esempio utilizzare nell'attribute SqlTrigger
>le espressioni After - Before? Se sì come?
Ciao Andrea,
Prima di tutto l'invocazione del trigger è determinata dagli eventi che specifichi nel comando CREATE TRIGGER.
Nel corpo del trigger in C# puoi determinare quale operazione l'ha scatenato, interrogando la proprietà TriggerAction dell'oggetto SqlContext:
http://msdn2.microsoft.com/it-it/library/ms189799.aspx
http://technet.microsoft.com/it-it/library/ms131093.aspx
>Ringrazio Anticipatamente
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
lolic
Profilo
| Newbie
37
messaggi | Data Invio:
sab 1 mar 2008 - 10:33
>>Sto implementando dei Trigger in C# ma non riesco a trovare un'indicazione
>>di quando il Trigger è invocato.
>>E' possibile ad esempio utilizzare nell'attribute SqlTrigger
>>le espressioni After - Before? Se sì come?
>
>Ciao Andrea,
>
>Prima di tutto l'invocazione del trigger è determinata dagli
>eventi che specifichi nel comando CREATE TRIGGER.
E questo viene indicato nell'attribute indicando Event = :
[Microsoft.SqlServer.Server.SqlTrigger(Name = "Trigger", Target = "Table", Event = "FOR INSERT,UPDATE")]
>Nel corpo del trigger in C# puoi determinare quale operazione
>l'ha scatenato, interrogando la proprietà TriggerAction dell'oggetto
>SqlContext:
Quindi verifico se Insert,Update, Delete oltre a tutte le altre tipologie di Action
>
http://msdn2.microsoft.com/it-it/library/ms189799.aspx
Nel sito è indicato quanto segue:
FOR | AFTER
AFTER specifica che il trigger viene attivato solo al termine dell'esecuzione di tutte le operazioni specificate nell'istruzione di trigger SQL. Affinché il trigger venga attivato, è inoltre necessario che siano stati completati tutti i controlli dei vincoli e le operazioni referenziali di propagazione.
AFTER è il tipo di trigger predefinito quando FOR è l'unica parola chiave specificata.
Non è possibile definire trigger AFTER per le viste.
Dalla quale però non capisco come devo usarlo, nel seguente modo?:
[Microsoft.SqlServer.Server.SqlTrigger(Name = "Trigger", Target = "Table", Event = "AFTER INSERT,UPDATE")]
se invece metto Event = "FOR INSERT,UPDATE" il trigger è chiamato prima dell'evento specificato, nel caso di Inserimento o Modifica ?
Quello che ancora non capisco è dunque come specificare quando vi è l'invocazione del metodo che definisce il trigger e come indicare il quando.
Se ho il trigger: public static void TiggerDiEsempio()
e specifico nell'attribute del metodo: Event = "FOR UPDATE"
Il codice verrà eseguito prima dell'esecuzione dell'UPDATE o dopo l'esecuzione dell'UPDATE?
Mi scuso ma come è scritto nel sito non mi aiuta a comprendere.
>
http://technet.microsoft.com/it-it/library/ms131093.aspx
>
>>Ringrazio Anticipatamente
>Prego.
>
>Ciao!
>--
>Lorenzo Benaglia
>Microsoft MVP - SQL Server
>
http://blogs.dotnethell.it/lorenzo/
>
http://italy.mvps.org
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 3 mar 2008 - 11:00
>>Prima di tutto l'invocazione del trigger è determinata dagli
>>eventi che specifichi nel comando CREATE TRIGGER.
>
>E questo viene indicato nell'attribute indicando Event = :
>[Microsoft.SqlServer.Server.SqlTrigger(Name = "Trigger", Target
>= "Table", Event = "FOR INSERT,UPDATE")]
Come ho scritto, io lo metterei SOLO nel comando T-SQL CREATE TRIGGER.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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 !