2010-04-28 10 views
5

Dato che SQL Server non consente la modifica delle tabelle logiche INSERTED e DELETED in un trigger, esiste un modo semplice per modificare il valore di una singola colonna e non dover riscrivere l'intera istruzione di inserimento?SQL Server anziché trigger di inserimento: esiste un modo semplice per modificare una singola colonna?

Ad esempio, la tabella a cui sto applicando il trigger ha 20 colonne. Voglio modificare il valore dalla tabella INSERTED per una colonna (per riga) e quindi inserire quella riga nella tabella. Posso farlo senza scrivere un'istruzione di inserimento con 19 colonne più la colonna di cui sto modificando il valore?

risposta

7

Sì, è sufficiente utilizzare un trigger "dopo l'inserimento" anziché un trigger "al posto di inserire".

In questo modo la riga è già stata inserita nella tabella e tutto ciò che si deve fare è emettere un'istruzione di aggiornamento (attentamente predisposta), solitamente mediante unione interna alla tabella INSERTED sul campo chiave primaria.

+0

Certo! Grazie! – Matt

3

Per aggiungere ulteriori dettagli a BradCs risposta:

La sintassi per un aggiornamento con un join è un po 'traballante

Update table 
    set columnA = inserted.columnA/10 
from table 
inner join inserted on table.id = inserted.id 
Problemi correlati