Tek bir veri parçasının bir Güncelleştirme veya Ekleme'de anahtarla yürütülüp yürütülmediğini belirlemek için SQL

Sayfa güncel :
Sayfa oluşturma tarihi :

Anahtar varsa Güncelleştir veya anahtar yoksa Ekle gibi bir işlemde, genellikle anahtara göre bir seçim yapılır ve işlem, bir servis talebi olup olmadığı denetlenerek belirlenir. SQL Server 2008 ayrıca, tek bir deyimle bir Update ve Insert (ve sonra Delete) gerçekleştirmenize olanak tanıyan bir "merge" deyimi ekler. Ancak, bu iki tablonun karşılaştırmasıdır ve tek veriler için uygun değildir.

Aslında, bir select deyimiyle kayıt sayısını denetlemek zorunda kalmadan Update and Insert'i belirleyerek bir satırı kolayca güncellemenin bir yolu vardır.

update [TableName]
set [ColumnName] = @value
--    : 他更新 SQL
where [KeyColumnName] = @value
--    : 他キー比較
if @@ROWCOUNT = 0
insert into [TableName]
(
  [ColumnName]
--  : 他更新 SQL
)
values
(
  @value
--  : 他更新値
)

Buradaki anahtar kelime "@@ROWCOUNT"dir. @@ROWCOUNT, önceki SQL'in uygulandığı satır sayısını alabilir. Önceki kod önce Update deyimini yürütür ve güncelleştirilmişse @@ROWCOUNT 1 veya daha büyük değerini döndürür, bu nedenle bir sonraki Insert deyimini yürütmez. Tersine, Update deyiminde hiçbir satır güncelleştirilmezse, @@ROWCOUNT 0 döndürür, bu nedenle Insert by IF deyimi yargısını yürütün.

Yukarıdaki SQL bir şablon olduğundan, uygun zamanda güncelleştirilecek sütun adlarını ve değerlerini değiştirin. @value yalnızca bir değişken adıdır, bu nedenle bunu güncelleştirmek istediğiniz değerle değiştirin.