SQL Server’da OUTPUT ile Kayıt Taşıma
  1. Anasayfa
  2. SQL Server

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

2

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 Server üzerinde ise OUTPUT 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 SQL Server’ı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ı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

TAGs:sql delete, OUTPUT, SQL Server, t-sql, Sql insert, SQL komutları, T-SQL nedir,SQL Server’da OUTPUT ile Kayıt Taşıma

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 2
    k_zd_m_
    Kızdım!

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.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yorumlar (2)

  1. 05/11/2018

    Ellerinize sağlık Mert hocam :)

  2. 07/11/2018

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

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir