- SQL de nesnelerimizin adlarını değiştirmek için sp_rename sistem procedürünü kullanılırız.
SÖZ DİZİMİ:
exec sp_rename @object_name, @new_object_name, @object_type
1-) Tablo adının değiştirilmesi
SELECT object_id('Birds')
exec sp_rename 'Birds','Kuslar'
SELECT object_id('Birds')
SELECT *
FROM Birds
Invalid Object Name 'Birds' hatası döndürecektir.
SELECT *
FROM Kuslar
Sorgusunu çalıştırarsınız, Birds tablosundan taşıdığımız kolonları göreceksiniz.
İçerisinde data olduğu için kayıtlı verileri görebilirsiniz.
2-) Kolon adının değiştirilmesi :
- Biraz önce create ettiğimiz ve adını Kuslar olarak değiştirdiğimiz tablonun name kolonunu Adı olarak değiştirelim..
- sp_rename prosedürünün bizim şimdiye kadar kullanmadığımız, default u 'object' olan bir parametresi daha var.
- Kolonlar, sysobjects de yer almazlar ve birer database objesi değillerdir ve tablo ismi olmadan da birşey ifade etmezler.
- x tablonun y kolonu diye saklanırlar ve çağırılırlar. Bu yüzden ismini değiştirdiğimiz nesnenin kolon tipinde olduğunu ve hangi tabloya ait olduğunu da söylememiz gerekir.
exec sp_rename 'Kuslar.Name','Adı','COLUMN'
Kuslar tablomuza ait olan name isimli kolonu Adı olarak değiştirdik.
SELECT *
FROM Kuslar
sorgusunu çağırarak kolon adının değiştiğini görebiliriz.
3-) Index değerinin değiştirilmesi
- sp_rename ile indexleri de yeniden adlandırabiliriz.
exec sp_rename 'Kuslar.BirdId', 'KusNo','INDEX'
NOT: sp_rename ile syscomments de bulunan text alanındaki nesne ismini değiştiremeyiz.
Bu yüzden 'function','stored procedure','trigger' ve 'view' gibi programlanabilir nesneler için sp_rename i kullanmamalıyız.
Bu tür nesneler için sp_rename yerine önce bu nesleri
drop(silme)
edip sonra istediğimiz yeni isim ile yeniden
create(oluşturma)
edebiliriz.
NOT: Oluşturulan her bir nesne nin bir id si vardır ve sql serverda nesneler id leri ile saklanırlar.
object_id system function ını kullanarak objenin id sini öğrenebilir ve varolup olmadığından da böylecek emin olabiliriz.
object_id (objectname)
null döndürüyorsa o isimde nesne ilgili database de yok demektir.