[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'
작은 따옴표를 사용하여 값을 묶어야합니다.
답변
또는 SQL
Microsoft SQL Server Management Studio에서이 작업을 수행 할 수 있습니다. GUI를 사용하는 몇 가지 빠른 방법은 다음과 같습니다.
첫 번째 방법
열을 천천히 두 번 클릭하십시오. 열 이름은 편집 가능한 텍스트 상자가됩니다.
두 번째 방법
열을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 이름 바꾸기를 선택하십시오.
예를 들면 다음과 같습니다.
세번째 방법
이 방법은 여러 열의 이름을 한 번에 바꾸어야하는 경우에 적합합니다.
- 이름을 변경해야하는 열이 포함 된 테이블을 마우스 오른쪽 단추로 클릭하십시오.
- 디자인을 클릭하십시오 .
- 테이블 디자인 패널에서 변경하려는 열 이름의 텍스트 상자를 클릭하고 편집하십시오.
예를 들면 다음과 같습니다.
참고 : 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';
답변
이미 내장 함수를 사용하는 것이 좋지만 다른 방법은 다음과 같습니다.
- 동일한 데이터 유형 및 새 이름을 가진 새 열을 작성하십시오.
- UPDATE / INSERT 문을 실행하여 모든 데이터를 새 열에 복사하십시오.
- 이전 열을 삭제하십시오.
를 사용하면 얻을 수있는 이점 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]]
.