1. Ana Sayfa
  2. SQL Server
  3. SQL Server’da OUTPUT ile Kayıt Taşıma

SQL Server’da OUTPUT ile Kayıt Taşıma

SQL Server’da OUTPUT ile Kayıt Taşıma

Veritabanı üzerinde işlem yaparken tablolar üzerinde artık önemini kaybeden ve günlük operasyonlarda yavaşlamamıza sebep olan veriler olabiliyor. Bunları belirli aralıklar ile siliyor ya da gerekli olabileceğini düşünüyorsak mevcut tablodaki kayıtları benzer şemada bir Historical tablo oluşturarak burada arşivleyebiliyoruz.

Burada herkesin bildiği en klasik yöntem INSERT – DELETE diyebiliriz. Yani bir tablodan kayıtları öncelikle arşivleyeceğimiz tabloya taşıyoruz ve bu işlemden sonra aktarılan kayıtları kaynak tablodan siliyoruz.

SQL üzerinde ise komutu ile bu taşıma işlemini tek hamlede nasıl yapabilirsiniz ondan bahsedeceğim

İlk olarak örnek tablomuzu oluşturup kayıtlarımızı ekleyelim

CREATE TABLE dbo.Person (ID INT IDENTITY(1,1), FirstName VARCHAR(50), CreateDate DATETIME)
GO
INSERT INTO dbo.Person (FirstName, CreateDate)
SELECT ‘Daniel’,’2017-01-10′
GO
INSERT INTO dbo.Person (FirstName, CreateDate)
SELECT ‘Mike’,’2016-05-20′
GO
INSERT INTO dbo.Person (FirstName, CreateDate)
SELECT ‘Conner’,’2018-10-11′
GO
INSERT INTO dbo.Person (FirstName, CreateDate)
SELECT ‘Jack’,’2018-09-05′
GO
INSERT INTO dbo.Person (FirstName, CreateDate)
SELECT ‘Simon’,’2018-07-12′

Tablomuza göz atalım

SELECT * FROM dbo.Person

Verileri taşıyacağımız yeni tablomuzu oluşturalım ve buna DeleteDate adında silinme tarihlerini yazacağımız bir alan daha ekleyelim.

CREATE TABLE dbo.Person_History (ID INT, FirstName VARCHAR(50), CreateDate DATETIME, DeleteDate DATETIME)

CreateDate 2018’den küçük kayıtlarımızı silinme tarihlerini GETDATE() vererek OUTPUT komutu ile yeni tablomuza taşıyalım.

DELETE FROM dbo.Person
OUTPUT
DELETED.ID,
DELETED.FirstName,
DELETED.CreateDate,
GETDATE() AS DeleteDate
INTO dbo.Person_History
WHERE YEAR(CreateDate) < 2018

Tablolarımızı tekrar kontrol edelim

Resim-1

Burada önemli iki nokta var.

  1. DELETED ’ın bize sunduğu bir Alias Identifier’dır.
  2. INTO komutu alıştığınız kullanımın aksine tabloyu kendi oluşturmaz. Mevcut olan bir tabloya ihtiyaç duyar.

Bu makalemiz de OUTPUT parametresini DELETED için tablomuzdaki gereksiz dataları taşımak için kullandık. Fakat, bunun yanında UPDATE, INSERT ve MERGE işlemleri için de farklı şekillerde kullanabilirsiniz.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

TAGs:, OUTPUT, SQL Server, , , , ,SQL Server’da OUTPUT ile Kayıt Taşıma

Yorum Yap

Yazar Hakkında

Gazi Üniversitesi Bilgisayar bölümü ile başladığım eğitimi Anadolu Üniversitesi İşletme mezunu olarak tamamladım. 2009 senesinden bu yana Microsoft ürünleri ile İş Zekası ve Veri Ambarı konularında pek çok farklı sektörde uçtan uca proje geliştirdim. Halen aktif olarak MS SQL Server, SSIS, SSRS, SSAS ürünleri üzerinde çalışma hayatıma devam etmekteyim.

Yorum Yap

Yorumlar (2)

  1. 8 ay önce

    Ellerinize sağlık Mert hocam 🙂

  2. 8 ay önce

    Eline sağlık Mert 🙂 faydalı bir paylaşım.