Tigger

giovedì 16 marzo 2006 - 10.48

Jamar77 Profilo | Newbie

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

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
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5