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
Tigger
giovedì 16 marzo 2006 - 10.48
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Jamar77
Profilo
| Newbie
15
messaggi | Data Invio:
gio 16 mar 2006 - 10:48
Ciao a tutti!
Volevo sapere se c'è un metodo per sapere se c'è stata almeno una variazione di dati all'interno della tabella indipendentemente dal campo! so che durante l'aggiornamento del record SQL si crea due tabelle virtuali 'inserted' e 'deleted' ma come faccio a confrontarle senza dover specificare il campo?
Spero di essere stato chiaro
Ciciu
Profilo
| Senior Member
233
messaggi | Data Invio:
gio 16 mar 2006 - 11:33
Ciao.
PotresTi provare questo :
Dichiara una variabile di tipo CHAR(1) :
@update_type char(1);
Poi, all'inizio del trigger, inserisci le seguenti righe :
if @@rowcount=0 return
if (select count(*) from inserted)>(select count(*) from deleted)
select @update_type = 'I'
else if (select count(*) from inserted)<(select count(*) from deleted)
select @update_type = 'D'
else if (select count(*) from inserted)=(select count(*) from deleted)
select @update_type = 'U'
La prima, Ti permette di uscire dal trigger nel caso in cui non sia cambiato nulla.
Le successive, Ti dicono COSA sta succedendo (Insert/Update/Delete).
A differenza di SQL Server (per quanto ne so io) non ha le variabili booleane Inserted e Deleted, per cui devi capire dal contenuto delle tabelle virtuali cosa è successo...
Attenzione : il trigger, su SQL Server, scatta UNA sola volta per comando. Se fai un'update di 100 righe con una sola update, dovrai aprire un cursore sulla tabella inserted o deleted, per prendere in considerazione tutti i dati !
Ciao - Fabio
>Ciao a tutti!
>Volevo sapere se c'è un metodo per sapere se c'è stata almeno
>una variazione di dati all'interno della tabella indipendentemente
>dal campo! so che durante l'aggiornamento del record SQL si crea
>due tabelle virtuali 'inserted' e 'deleted' ma come faccio a
>confrontarle senza dover specificare il campo?
>
>Spero di essere stato chiaro
Fabio G
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 !