Saya menggunakan SQL Server 2008 dan Navicat. Saya perlu mengganti nama kolom dalam tabel menggunakan SQL.
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Pernyataan ini tidak berfungsi.
Saya menggunakan SQL Server 2008 dan Navicat. Saya perlu mengganti nama kolom dalam tabel menggunakan SQL.
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Pernyataan ini tidak berfungsi.
Jawaban:
Menggunakan sp_rename
EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'
Lihat: SQL SERVER - Cara Mengganti Nama Nama Kolom atau Nama Tabel
Dokumentasi: sp_rename (Transact-SQL)
Untuk kasus Anda adalah:
EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'
Ingatlah untuk menggunakan tanda kutip tunggal untuk melampirkan nilai Anda.
EXEC sp_RENAME '[TableName].[OldColumnName]', 'NewColumnName', 'COLUMN'
alter table
yang akan GAGAL jika kendala tersebut ada.
Atau SQL
, Anda dapat melakukan ini di Microsoft SQL Server Management Studio. Berikut adalah beberapa cara cepat menggunakan GUI:
Lambat klik dua kali pada kolom. Nama kolom akan menjadi kotak teks yang dapat diedit.
Klik kanan pada kolom dan pilih Ubah nama dari menu konteks.
Sebagai contoh:
Cara ini lebih disukai ketika Anda perlu mengganti nama beberapa kolom sekaligus.
Sebagai contoh:
CATATAN: Saya tahu OP secara khusus meminta solusi SQL, berpikir ini mungkin membantu orang lain :)
Anda juga harus menentukan skema tabel atau Anda mungkin mendapatkan kesalahan ini:
Msg 15248, Level 11, Status 1, Prosedur sp_rename, Baris 238 Entah parameter @objname ambigu atau @objtype (COLUMN) yang diklaim salah.
Jika ini adalah skrip penerapan, saya juga akan merekomendasikan untuk menambahkan beberapa keamanan tambahan.
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';
Ini akan menjadi saran yang bagus untuk menggunakan fungsi yang sudah terpasang tetapi cara lain adalah:
Manfaat di balik penggunaannya sp_rename
adalah bahwa ia menangani semua hubungan yang terkait dengannya.
Dari dokumentasi :
sp_rename secara otomatis mengubah nama indeks terkait setiap kali PRIMARY KEY atau kendala UNIQUE diganti namanya. Jika indeks yang diubah namanya dikaitkan dengan batasan PRIMARY KEY, batasan PRIMARY KEY juga secara otomatis diganti nama dengan sp_rename. sp_rename dapat digunakan untuk mengganti nama indeks XML primer dan sekunder.
Anda dapat menggunakan sp_rename
untuk mengganti nama kolom.
USE YourDatabase;
GO
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';
GO
Parameter pertama adalah objek yang akan diubah, parameter kedua adalah nama baru yang akan diberikan kepada objek, dan parameter ketiga COLUMN menginformasikan server bahwa nama diubah adalah untuk column
, dan juga dapat digunakan untuk mengganti nama tables
, index
dan alias data type
.
Karena saya sering datang ke sini dan kemudian bertanya-tanya bagaimana cara menggunakan kurung, jawaban ini mungkin berguna bagi mereka yang seperti saya.
EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN';
OldColumnName
tidak harus dalam []
. Itu tidak akan bekerja.NewColumnName
ke dalam []
, itu akan menghasilkan [[NewColumnName]]
.Sql Server management studio memiliki beberapa sistem yang ditetapkan Stored Procedures (SP).
Salah satunya digunakan untuk mengubah nama kolom. SP adalah sp_rename
Sintaks: sp_rename '[table_name] .old_column_name', 'new_column_name'
Untuk bantuan lebih lanjut lihat artikel ini: sp_rename oleh Microsoft Docs
Catatan: Pada pelaksanaan SP ini server sql akan memberi Anda pesan peringatan sebagai ' Perhatian: Mengubah bagian mana pun dari nama objek dapat memecahkan skrip dan prosedur tersimpan '. Ini sangat penting hanya jika Anda telah menulis sp Anda sendiri yang melibatkan kolom di tabel Anda akan berubah.
Versi @Taher yang ditingkatkan
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
Jalankan Kueri:
SP_RENAME '[TableName].[ColumnName]','NewNameForColumn'