[sql] 열 SQL Server 2008 이름 바꾸기

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'

작은 따옴표를 사용하여 값을 묶어야합니다.


답변

또는 SQLMicrosoft SQL Server Management Studio에서이 작업을 수행 할 수 있습니다. GUI를 사용하는 몇 가지 빠른 방법은 다음과 같습니다.

첫 번째 방법

열을 천천히 두 번 클릭하십시오. 열 이름은 편집 가능한 텍스트 상자가됩니다.


두 번째 방법

열을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 이름 바꾸기를 선택하십시오.

예를 들면 다음과 같습니다.

열 이름을 바꾸려면


세번째 방법

이 방법은 여러 열의 이름을 한 번에 바꾸어야하는 경우에 적합합니다.

  1. 이름을 변경해야하는 열이 포함 된 테이블을 마우스 오른쪽 단추로 클릭하십시오.
  2. 디자인을 클릭하십시오 .
  3. 테이블 디자인 패널에서 변경하려는 열 이름의 텍스트 상자를 클릭하고 편집하십시오.

예를 들면 다음과 같습니다.
MSSMS 테이블 디자인 예

참고 : OP가 SQL 솔루션을 구체적으로 요구한다는 것을 알고 있습니다.


답변

시험:

EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'


답변

테이블의 스키마를 지정해야합니다. 그렇지 않으면이 오류가 발생할 수 있습니다.

메시지 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';


답변

이미 내장 함수를 사용하는 것이 좋지만 다른 방법은 다음과 같습니다.

  1. 동일한 데이터 유형 및 새 이름을 가진 새 열을 작성하십시오.
  2. UPDATE / INSERT 문을 실행하여 모든 데이터를 새 열에 복사하십시오.
  3. 이전 열을 삭제하십시오.

를 사용하면 얻을 수있는 이점 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.


답변

나는 종종 여기에 와서 대괄호를 사용하는 방법을 궁금해하기 때문에이 대답은 나와 같은 사람들에게 유용 할 수 있습니다.

EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN'; 
  • OldColumnName없어야합니다 []. 이거 작동 안 할거야.
  • 넣지 마십시오 NewColumnName으로 [], 그것은으로 발생합니다 [[NewColumnName]].