2010-04-28 23 views
5

SQL Server'ın bir tetikleyicideki mantıksal INSERTED ve DELETED tablolarının değiştirilmesine izin vermediği göz önüne alındığında, tek bir sütunun değerini değiştirmenin ve tüm insert ifadesinin tamamını yeniden yazmanın kolay bir yolu yok mu? Örneğin, tetikleyiciyi uyguladığım tablo 20 sütun içeriyor. Bir sütun (satır başına) için INSERTED tablosundaki değeri değiştirmek ve sonra bu satırı tabloya eklemek istiyorum. Bunu 19 sütun içeren bir ek ifadesi yazmadan artı değeri değiştirdiğim bir sütun yazmadan yapabilir miyim?SQL Server, insert tetikleyicileri yerine - tek bir sütunu değiştirmek için kolay bir yol var mı?

cevap

7

Evet, bir "insert-insert" tetikleyicisi yerine, "insert after" tetikleyicisini kullanmanız yeterlidir.

Bu şekilde, satır önceden tabloya eklenmiş ve yapmanız gereken tek şey, genellikle (birincil olarak) birincil anahtar alanındaki INSERTED tablosuna iç birleştirme ile bir (dikkatle hazırlanmış) güncelleme bildirimi yayınlamaktır.

+0

Biraz zayıf olduğunu! Teşekkürler! – Matt

3

BradCs cevap daha fazla ayrıntı eklemek için:

sözdizimi güncelleştirme için bir katılmak ile

Tabii
Update table 
    set columnA = inserted.columnA/10 
from table 
inner join inserted on table.id = inserted.id 
İlgili konular