Sql Server'da bir tablonun sütunlarındaki verileri kullanarak hesaplanmış sütun ekleyebiliyoruz, bunun için örneğin fiyat ve adet bilgileri olan bir ürün satışları tablosunda satır toplam adında bir hesaplanmış sütun eklemek için:
CREATE TABLE dbo.UrunSatislari
(
Id int IDENTITY (1,1) NOT NULL,
Adet int,
Fiyat float,
SatirToplam AS Fiyat * Adet
);
Peki ya bir tabloda sipariş kalemlerini, diğer tabloda da sipariş bilgilerini (kullanıcı, tarih, toplam vb) tutuyorsak nasıl hesaplanmış sütun ekleyebiliriz? Bu işlem için fonksiyon kullanabiliyoruz.
Önce fonksiyonu yazalım:
CREATE FUNCTION [dbo].[fn_SiparisToplam] (@SiparisId int)
RETURNS float
AS
BEGIN
DECLARE @toplam float;
SELECT @toplam = sum(adet*fiyat)
FROM SiparisKalemleri
WHERE siparisID = @SiparisId;
RETURN @toplam;
END;
GO
Şimdi de hesaplanmış sütun olarak siparişler tablosuna toplam sütunu ekleyelim.
ALTER TABLE Siparisler
ADD Toplam AS dbo.fn_SiparisToplam(Id);
Bu işlem sonucunda artık siparişe ürün ekleme ya da çıkarma işlemi yaptığımızda fiyatı güncellememize gerek kalmayacak çünkü güncel sipariş kalemlerine bakılarak sürekli güncel değer hesaplanarak aktarılmış olacak.