SQL Server 2008 ve Navicat kullanıyorum. SQL kullanarak bir tablodaki bir sütunu yeniden adlandırmak gerekiyor.
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Bu ifade işe yaramıyor.
SQL Server 2008 ve Navicat kullanıyorum. SQL kullanarak bir tablodaki bir sütunu yeniden adlandırmak gerekiyor.
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Bu ifade işe yaramıyor.
Yanıtlar:
kullanım sp_rename
EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'
Bkz: SQL SERVER - Bir Sütun Adı veya Tablo Adı Nasıl Yeniden Adlandırılır
Belgeler: sp_rename (Transact-SQL)
Sizin durumunuz için:
EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'
Değerlerinizi içine almak için tek tırnak işareti kullanmayı unutmayın.
EXEC sp_RENAME '[TableName].[OldColumnName]', 'NewColumnName', 'COLUMN'
alter tablebu tür kısıtlamalar varsa BAŞARISIZ edecektir.
Alternatif olarak SQL, bunu Microsoft SQL Server Management Studio'da da yapabilirsiniz. GUI'yi kullanmanın birkaç hızlı yolu:
Sütuna yavaş çift tıklayın. Sütun adı düzenlenebilir bir metin kutusu haline gelecektir.
Sütuna sağ tıklayın ve içerik menüsünden Yeniden Adlandır'ı seçin.
Örneğin:

Bu şekilde, tek seferde birden çok sütunu yeniden adlandırmanız gerektiğinde tercih edilir.
Örneğin:

NOT: OP'nin özellikle SQL çözümü istediğini biliyorum, bunun başkalarına yardımcı olabileceğini düşündüm :)
Tablonun şemasını da belirtmelisiniz yoksa bu hatayı alabilirsiniz:
Msg 15248, Düzey 11, Durum 1, Yordam sp_rename, Satır 238 @objname parametresi belirsiz veya talep edilen @objtype (COLUMN) yanlış.
Bir dağıtım komut dosyasıysa, buna ek güvenlik eklemenizi de öneririm.
IF EXISTS (
SELECT 1
FROM sys.columns
WHERE
name = 'OldColumnName' AND
object_name(object_id) = 'TableName'
) AND
NOT EXISTS (
SELECT 1
FROM sys.columns
WHERE
name = 'NewColumnName' AND
object_name(object_id) = 'TableName'
)
EXEC sp_RENAME 'SchemaName.TableName.OldColumnName', 'NewColumnName', 'COLUMN';
Zaten yerleşik bir işlevi kullanmak iyi bir öneri olacaktır, ancak başka bir yol da:
Bunu kullanmanın yararı sp_rename, onunla ilişkili tüm ilişkileri halletmesidir.
Gönderen belgeler :
Bir PRIMARY KEY veya UNIQUE kısıtlaması her yeniden adlandırıldığında, sp_rename ilişkili dizini otomatik olarak yeniden adlandırır. Yeniden adlandırılmış bir dizin bir PRIMARY KEY kısıtlamasına bağlıysa, PRIMARY KEY kısıtlaması da sp_rename tarafından otomatik olarak yeniden adlandırılır. sp_rename, birincil ve ikincil XML dizinlerini yeniden adlandırmak için kullanılabilir.
sp_renameBir sütunu yeniden adlandırmak için kullanabilirsiniz .
USE YourDatabase;
GO
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';
GO
İlk parametre modifiye edilmesi amacı, ikinci parametre nesnesine verilecektir yeni bir isim ve üçüncü parametre KOLON bildirir adlandırma için sunucu column, ve aynı zamanda yeniden adlandırmak için kullanılabilir tables, indexve alias data type.
Buraya sık sık geldiğim ve daha sonra köşeli parantezleri nasıl kullanacağımı merak ettiğim için, bu cevap benim gibi olanlar için yararlı olabilir.
EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN';
OldColumnNameOlmamalıdır []. Çalışmayacak.NewColumnNameiçine [], o içine sonuçlanacaktır [[NewColumnName]].Sql Server yönetim stüdyosu,
biri sütunu yeniden adlandırmak için kullanılan bazı sistem tanımlı Saklı Yordamlar (SP) vardır . SP sp_rename
Sözdizimi: sp_rename '[table_name] .old_column_name', 'new_column_name'
Daha fazla yardım için bu makaleye bakın: Microsoft Docs tarafından sp_rename
Not: Bu SP'nin yürütülmesi sırasında sql sunucusu size ' Dikkat: Bir nesne adının herhangi bir parçasını değiştirmek komut dosyalarını ve saklı yordamları bozabilir ' şeklinde bir uyarı mesajı verecektir.Bu, yalnızca sütunu içeren kendi sp'nizi yazdıysanız önemlidir. Tabloda değiştirmek üzeresiniz.
@Taher'ın geliştirilmiş sürümü
DECLARE @SchemaName AS VARCHAR(128)
DECLARE @TableName AS VARCHAR(128)
DECLARE @OldColumnName AS VARCHAR(128)
DECLARE @NewColumnName AS VARCHAR(128)
DECLARE @ParamValue AS VARCHAR(1000)
SET @SchemaName = 'dbo'
SET @TableName = 'tableName'
SET @OldColumnName = 'OldColumnName'
SET @NewColumnName = 'NewColumnName'
SET @ParamValue = @SchemaName + '.' + @TableName + '.' + @OldColumnName
IF EXISTS
(
SELECT 1 FROM sys.columns WHERE name = @OldColumnName AND OBJECT_NAME(object_id) = @TableName
)
AND NOT EXISTS
(
SELECT 1 FROM sys.columns WHERE name = @NewColumnName AND OBJECT_NAME(object_id) = @TableName
)
BEGIN
EXEC sp_rename @ParamValue, @NewColumnName, 'COLUMN';
END
Sorguyu Çalıştır:
SP_RENAME '[TableName].[ColumnName]','NewNameForColumn'