Selamlar...
Başlığı biraz daha açmak gerekebilir.
Misal MUSTERI isimli bir tablonuz var. Bu tabloyla bağlantılı, aralarında FOREIGN KEY ilişkisi olmayan bir çok tablonuz daha olsun.
MUSTERI tablosundaki bir MusteriNo değeri değiştiğinde ilişkili tablolarda da gerekli güncellemeyi yapmak lazım haliyle.
Peki hangi tabloda bu değer var nasıl buluruz kolayca?
İşte aşağıdaki şekilde bulabiliriz:
DECLARE @kolonAdi NVARCHAR(20);
DECLARE @tabloAdi NVARCHAR(50);
DECLARE @arananDeger NVARCHAR(50);
DECLARE @dinamikSql NVARCHAR(1000);
DECLARE @tabloCursor CURSOR
  
SET @kolonAdi = 'MusteriNo';
SET @arananDeger = '123456789';
  
SET @tabloCursor = CURSOR FAST_FORWARD
FOR SELECT table_name from INFORMATION_SCHEMA.COLUMNS
       WHERE TABLE_CATALOG = '[VeritabaniAdi]'
       AND COLUMN_NAME = @kolonAdi
       AND table_name LIKE '[IstegeBagliTabloOnEki]%'
  
       OPEN @tabloCursor
       FETCH NEXT FROM @tabloCursor INTO @tabloAdi
             WHILE @@FETCH_STATUS = 0
               BEGIN
                    SET @dinamikSql = ' SELECT ''' + @tabloAdi  + ''', tbl.* FROM [' + @tabloAdi + '] tbl'
                    SET @dinamikSql = @dinamikSql + ' WHERE tbl.[' + @kolonAdi + '] = ''' + @arananDeger + ''' ' ;
                          EXEC (@dinamikSql)
                    FETCH NEXT FROM @tabloCursor INTO @tabloAdi
               END
       CLOSE @tabloCursor;
       DEALLOCATE @tabloCursor;
GO
 
Burada diğer tablolarda da alanın adının MusteriNo olduğunu varsaydık.
Dilerseniz kolon adını LIKE ile aratıp içerisinde belirleyeceğimiz ifade geçen kolonları da aratabiliriz.
Bundan sonrası ihtiyaç ve hayal gücünüze kalmış.
 
Saygılar...
# Kategoriler : Sql Server Veritabanı
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz

Yorumlar

Yorum Eklenmemiş...

Yorum Yaz

Adınız: *
E-Mail Adresiniz: *
Web Sitesi:
Yorum: *
Güvenlik Kodu: *