SQL Server 2008과 Navicat을 사용하고 있습니다. SQL을 사용하여 테이블의 열 이름을 바꿔야합니다.
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
이 문장은 작동하지 않습니다.
SQL Server 2008과 Navicat을 사용하고 있습니다. SQL을 사용하여 테이블의 열 이름을 바꿔야합니다.
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
이 문장은 작동하지 않습니다.
답변:
사용하다 sp_rename
EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'
참조 : SQL 서버 - 기둥 이름이나 테이블 이름의 이름을 변경하는 방법
설명서 : sp_rename (Transact-SQL)
귀하의 경우 다음과 같습니다.
EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'
작은 따옴표를 사용하여 값을 묶어야합니다.
EXEC sp_RENAME '[TableName].[OldColumnName]', 'NewColumnName', 'COLUMN'
alter table
등의 제약이 존재하는 경우 실패합니다.
또는 SQL
Microsoft SQL Server Management Studio에서이 작업을 수행 할 수 있습니다. GUI를 사용하는 몇 가지 빠른 방법은 다음과 같습니다.
열을 천천히 두 번 클릭하십시오. 열 이름은 편집 가능한 텍스트 상자가됩니다.
열을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 이름 바꾸기를 선택하십시오.
예를 들면 다음과 같습니다.
이 방법은 여러 열의 이름을 한 번에 바꾸어야하는 경우에 적합합니다.
예를 들면 다음과 같습니다.
참고 : OP가 SQL 솔루션을 구체적으로 요구한다는 것을 알고 있습니다.
테이블의 스키마를 지정해야합니다. 그렇지 않으면이 오류가 발생할 수 있습니다.
메시지 15248, 수준 11, 상태 1, 절차 sp_rename, 줄 238 @objname 매개 변수가 모호하거나 청구 된 @objtype (COLUMN)이 잘못되었습니다.
배포 스크립트 인 경우 추가 보안을 추가하는 것이 좋습니다.
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';
이미 내장 함수를 사용하는 것이 좋지만 다른 방법은 다음과 같습니다.
를 사용하면 얻을 수있는 이점 sp_rename
은 이와 관련된 모든 관계를 처리한다는 것입니다.
로부터 문서 :
sp_rename은 PRIMARY KEY 또는 UNIQUE 제약 조건의 이름이 바뀔 때마다 연결된 인덱스의 이름을 자동으로 바꿉니다. 이름이 바뀐 인덱스가 PRIMARY KEY 제약 조건에 연결되어 있으면 PRIMARY KEY 제약 조건도 sp_rename에 의해 자동으로 이름이 바뀝니다. sp_rename을 사용하여 기본 및 보조 XML 인덱스의 이름을 바꿀 수 있습니다.
sp_rename
열 이름을 바꾸는 데 사용할 수 있습니다 .
USE YourDatabase;
GO
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';
GO
첫 번째 파라미터가 수정 될 수있는 객체이다 번째 파라미터는 오브젝트에 대하여 설명한다 새 이름이며, 세번째 파라미터 열 알리는 바꾸기를위한 것임을 서버 column
와 같은 이름을 사용할 수있다 tables
, index
그리고 alias data type
.
Sql Server Management Studio에는 시스템 정의 저장 프로 시저 (SP)가 있습니다.이
중 하나는 열의 이름을 바꾸는 데 사용됩니다. SP는 sp_rename입니다.
구문 : sp_rename '[table_name] .old_column_name', 'new_column_name'
자세한 내용은이 문서를 참조하십시오. sp_rename by Microsoft Docs
참고 : 이 SP를 실행하면 SQL 서버는 ' 주의 : 개체 이름의 일부를 변경하면 스크립트 및 저장 프로 시저가 손상 될 수 있습니다 '라는 경고 메시지를 표시 합니다 . 이것은 열과 관련된 자체 sp를 작성한 경우에만 중요합니다 표에서 변경하려고합니다.
@Taher의 개선 된 버전
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