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 table
bu 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_rename
Bir 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
, index
ve 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';
OldColumnName
Olmamalıdır []
. Çalışmayacak.NewColumnName
iç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'