SQL Server‘da Computed Column özelliği tabloda var olan verileri kullanarak yeni bir kolon türetmek için kullanılır. Örneğin; Siparişlerin tutulduğu bir tablo olduğunu varsayalım. Tablomuzda adet ve ürün tutarı tutulmuş olsun. Biz tablomuzda toplam tutar alanına ihtiyacımız olduğunu varsayacak olursak; Toplam Tutar=Adet*Ürün Tutarı olarak hesaplanacaktır.
İhtiyacımız olan alanı hesaplamak için iki farklı yöntem kullanabiliriz. İlk yöntemde “toptam tutar” kolonunu normal bir tabloya kolon ekler gibi ekledikten sonra uygulama katmanında “toplam tutar” değerini hesaplatıp tabloya gönderebiliriz. İkinci yöntemde ise SQL SERVER tarafında kullanabileceğimiz güzel bir özellik olanComputed (Hesaplanmış) kolon özelliğini kullanarak her kayıt eklendiğinde SQL Server tarafından otomatik olarak hesaplanıp bu kolona değeri işleyebiliriz. Konuyu örnek üzerinden inceleyelim.
Sipariş bilgilerinin tutulacağı bir tablo oluşturalım;

Software Developer - Mesut GÜNEŞ
1
2
3
4
5
6
7
CREATE TABLE CustomerOrders
(
OrderID INT IDENTITY(1,1),
CustomerID INT,
Qty INT,
Price DECIMAL(18,2)
)

Yukarıdaki script yardımı ile tablomuzu oluşturmuş olduk. Tablomuza toplam tutar bilgisinin Computed Column olarak tutulması için “Amount” isminde hesaplanmış kolon tanımlıyoruz.

Software Developer - Mesut GÜNEŞ
1
2
ALTER TABLE CustomerOrders
ADD Amount AS Price*Qty

Yukarıdaki t-sql sorgusunda da görüldüğü gibi tabloya normal bir kolon dahil eder gibi kullanıyoruz ancak veri tipi belirtmek yerine “AS” ifadesi ile hesaplama için kullanılacak formülü belirtiyoruz.

Dikkat: SQL Server’da Computed Column ile oluşturulan kolonlar fiziksel olarak diskte yer kaplamazlar. Ancak hesaplanmış kolonların diskte yer tutmasını fiziksel olarak diske yazılmasını istiyorsanız; “PERSISTED” ifadesini kullabilirsiniz. Yukarıdaki sorguda “PERSISTED” kullanılmadığı için hesaplanan kolon diskte yer tutmayacaktır. “PERSISTED” seçeneğini kullanmak isterseniz sorguyu aşağıdaki gibi düzenlemeniz gerekmektedir.

Software Developer - Mesut GÜNEŞ
1
2
ALTER TABLE CustomerOrders
ADD Amount AS Price*Qty PERSISTED

computed_column

 

Computed Column olarak oluşturulan alanlar yukarıdaki resimde görüldüğün gibi normal kolon simgesi ile birlikte hesap makinesi simgesi ile temsil edilmektedir.

PERSISTED özelliğini ne zaman kullanmalıyım? diye bir soru aklınıza gelebilir. Eğer verilerinizin diske yazılmasını istiyorsanız ve hesaplanmış kolon üzerinde INDEXtanımlamanız gerekiyorsa “persisted” özelliğini kullanmalısınız.

Software Developer - Mesut GÜNEŞ
1
INSERT INTO CustomerOrders VALUES (1,3,24.50),(1,5,25),(2,2,100)

Computed Column özelliğini test etmek için yukarıdaki script yardımı ile tabloma 3 tane kayıt ekliyorum.

computed_column_result

Eklemiş olduğum kayıtları sorguladığımda “Amount” kolonundaki verilerin benim belirttiğim formüldeki gibi hesaplandığını görüyorum.

Faydalı olması dileğiyle.

Yazıyı beğendiyeseniz sosyal medyada paylaşabilirsiniz.

Yazar Hakkında

Avatar
Mesut Güneş

Dogan Online Database Administrator

cialis generic kamagra gel cheap cialis uk levitra uk cialis generic kamagra gel kamagra 100mg cheap cialis uk cheap levitra uk cheap cialis kamagra 100mg cialis tadalafil kamagra oral jelly cialis buy viagra generic levitra uk kamagra gel cialis generic cheap levitra cheap viagra uk

Yorumlar

Yorum Yazın

.com

Bülten Üyeliği

Güncel eğitim ve etkinliklerden ilk haberdar olmak için ücretsiz abone olun.

Login

Login olmak için kullanıcı adınızı ve şifrenizi giriniz.

Şifremi Unuttum

×

Hızlı İletişim

Her konuda bana yazabilirsiniz. En kısa zamanda cevap vereceğim.

×