- Konu sahibi
- #1
İşlem kullandığınız veritabanı sistemine göre değişir. PostgreSQL ve MySQL’de genellikle
Önce tablo adını, mevcut sütun adını ve vermek istediğiniz yeni adı kesinleştirin. Aşağıdaki varsayımsal örnekte
Komut başarıyla çalışırsa sütunun içindeki değerler değişmez; yalnızca sütunun adı değişir. Sonucu doğrulamak için tablo yapısını görüntüleyin veya yeni adı kullanan bir sorgu çalıştırın:
Bu sorgu sonuç döndürüyorsa yeniden adlandırma tamamlanmış ve yeni sütun adıyla erişim mümkün demektir. Eski adı kullanan sorguların hata vermesi ise verinin silindiğini göstermez; sorgunun artık mevcut olmayan eski sütun adına başvurduğunu gösterir. Bu sorguları
MySQL’de yalnızca sütun adını değiştirmek için aynı sözdizimi kullanılabilir:
MySQL’in bazı sürümlerinde veya uyumluluk gerektiren eski çalışmalarda
Buradaki
SQL Server ve Azure SQL Database’te sütun adı değiştirmek için
Burada
Sorgu çalışıyorsa sütun yeni adıyla kullanılabilir durumdadır. SQL Server yeniden adlandırma işleminin etkilenen diğer nesnelerdeki tüm başvuruları otomatik olarak düzelttiğini garanti etmez. Saklı yordamları, görünümleri, tetikleyicileri, işlevleri, raporları ve uygulama sorgularını ayrıca tarayıp eski sütun adlarını güncelleyin.
Aynı görünen işlem, veritabanı motoruna göre farklı komut gerektirir. Uygulamanızın bağlantı ayarından veya kullandığınız yönetim aracının veritabanı türünden emin değilseniz komutu çalıştırmadan önce bunu belirleyin.
İşlemi canlı veritabanında uygulamadan önce, özellikle sütun yoğun kullanılan bir uygulamadaysa, yedek veya geri dönüş planı hazırlayın. Yeniden adlandırma çoğu durumda tablo satırlarını değiştirmez; buna rağmen şema değişikliği uygulamanın eski adı kullanan bölümlerini çalışamaz hâle getirebilir. Önce geliştirme veya test ortamında komutu çalıştırın, tablo yapısını doğrulayın ve uygulamanın ekleme, güncelleme, listeleme ve raporlama işlemlerini yeni adla test edin.
Bir hata alırsanız hata metnindeki tablo ve sütun adlarını kontrol edin. Eski sütun adı bulunamıyorsa mevcut tablo yapısında adı farklı olabilir; yeni sütun adı zaten kullanılıyorsa çakışma vardır. Yetki hatasında ise hesabınızın tablo yapısını değiştirmeye ve ilgili nesneyi yeniden adlandırmaya yetkili olup olmadığını veritabanı yöneticinizle netleştirin. Komut başarılı göründüğü hâlde uygulama hata veriyorsa veritabanındaki yeni adı değil, uygulama kodunda veya saklı nesnelerde kalan eski başvuruları düzeltmeniz gerekir.
ALTER TABLE ... RENAME COLUMN ... TO ... kullanılır; SQL Server’da ise sp_rename çalıştırılır. Sütun adı değiştiğinde tablodaki mevcut veriler korunur, ancak bu sütuna doğrudan adıyla erişen sorguların, görünümlerin, uygulama kodunun ve raporların yeni ada göre güncellenmesi gerekir.PostgreSQL ve MySQL’de sütun adını değiştirme
Önce tablo adını, mevcut sütun adını ve vermek istediğiniz yeni adı kesinleştirin. Aşağıdaki varsayımsal örnekte
musteriler tablosundaki ad sütunu musteri_adi olarak değiştiriliyor:
SQL:
ALTER TABLE musteriler
RENAME COLUMN ad TO musteri_adi;
Komut başarıyla çalışırsa sütunun içindeki değerler değişmez; yalnızca sütunun adı değişir. Sonucu doğrulamak için tablo yapısını görüntüleyin veya yeni adı kullanan bir sorgu çalıştırın:
SQL:
SELECT musteri_adi
FROM musteriler;
Bu sorgu sonuç döndürüyorsa yeniden adlandırma tamamlanmış ve yeni sütun adıyla erişim mümkün demektir. Eski adı kullanan sorguların hata vermesi ise verinin silindiğini göstermez; sorgunun artık mevcut olmayan eski sütun adına başvurduğunu gösterir. Bu sorguları
musteri_adi kullanacak şekilde düzeltin.MySQL’de yalnızca sütun adını değiştirmek için aynı sözdizimi kullanılabilir:
SQL:
ALTER TABLE musteriler
RENAME COLUMN ad TO musteri_adi;
MySQL’in bazı sürümlerinde veya uyumluluk gerektiren eski çalışmalarda
CHANGE biçimi de kullanılabilir. Bu biçimde sütunun veri türünü ve diğer tanımlarını yeniden yazmanız gerekir:
SQL:
ALTER TABLE musteriler
CHANGE ad musteri_adi VARCHAR(100) NOT NULL;
Buradaki
VARCHAR(100) NOT NULL kısmı mevcut sütunun gerçek tanımıyla aynı olmalıdır. Veri türünü, NULL kabulünü, varsayılan değeri veya başka bir özelliği yanlış yazarsanız sütunun adı değişirken yapısı da istemeden değişebilir. Bu nedenle yalnızca isim değiştirilecekse RENAME COLUMN daha güvenli ve anlaşılır tercihtir.SQL Server’da sütun adını değiştirme
SQL Server ve Azure SQL Database’te sütun adı değiştirmek için
sp_rename yordamını kullanın. Tablo ve sütun adını birlikte belirtin, son parametre olarak da COLUMN yazın:
SQL:
EXEC sys.sp_rename
N'dbo.musteriler.ad',
N'musteri_adi',
N'COLUMN';
Burada
dbo şema adı, musteriler tablo adı, ad eski sütun adı ve musteri_adi yeni sütun adıdır. Komutun ardından tablo yapısını kontrol edip yeni adı kullanan bir sorgu çalıştırın:
SQL:
SELECT musteri_adi
FROM dbo.musteriler;
Sorgu çalışıyorsa sütun yeni adıyla kullanılabilir durumdadır. SQL Server yeniden adlandırma işleminin etkilenen diğer nesnelerdeki tüm başvuruları otomatik olarak düzelttiğini garanti etmez. Saklı yordamları, görünümleri, tetikleyicileri, işlevleri, raporları ve uygulama sorgularını ayrıca tarayıp eski sütun adlarını güncelleyin.
Hangi veritabanı için hangi komut kullanılmalı?
Aynı görünen işlem, veritabanı motoruna göre farklı komut gerektirir. Uygulamanızın bağlantı ayarından veya kullandığınız yönetim aracının veritabanı türünden emin değilseniz komutu çalıştırmadan önce bunu belirleyin.
| Veritabanı | Komut | Dikkat edilmesi gereken nokta |
|---|---|---|
| PostgreSQL | ALTER TABLE... RENAME COLUMN... TO... | Tablo verileri korunur; eski adı kullanan sorgular güncellenmelidir. |
| MySQL | ALTER TABLE... RENAME COLUMN... TO... | Yalnızca adı değiştirmek için RENAME COLUMN tercih edilir; CHANGE kullanılırsa sütun tanımı da yazılır. |
| SQL Server | _rename... 'COLUMN' | Bağımlı sorguların ve nesnelerin başvuruları ayrıca incelenmelidir. |
Bir hata alırsanız hata metnindeki tablo ve sütun adlarını kontrol edin. Eski sütun adı bulunamıyorsa mevcut tablo yapısında adı farklı olabilir; yeni sütun adı zaten kullanılıyorsa çakışma vardır. Yetki hatasında ise hesabınızın tablo yapısını değiştirmeye ve ilgili nesneyi yeniden adlandırmaya yetkili olup olmadığını veritabanı yöneticinizle netleştirin. Komut başarılı göründüğü hâlde uygulama hata veriyorsa veritabanındaki yeni adı değil, uygulama kodunda veya saklı nesnelerde kalan eski başvuruları düzeltmeniz gerekir.