2012-10-01 5 views
2

가능한 중복 : 테이블의 특정 위치에 열을 추가하는 방법은 무엇입니까?


SQL Server 2008 : Cannot Insert new column in the middle position and change data type

안녕 난 SQL 서버를 사용하고 2008 & 2008 R2 내가 명령을 변경하여 특정 위치에 테이블에 열을 추가하고 싶습니다. 특정 위치에 열을 추가 할 수있는 방법으로 키워드를 사용하고 있습니까? 감사! 에 adavanced. SQL 서버에서 매우 쉽게

+2

** BTW : ** 관계형 모델에서 열의 순서는 중요하지 않으므로 데이터베이스 디자인에서 해당 순서를 고려하지 않아야합니다. –

+2

@MahmoudGamal -이 작업을 수행 할 수있는 기능이 필요합니다. (여기에는 이유가 있습니다.) (https://connect.microsoft.com/SQLServer/feedback/details/739788/alter-table-syntax-for-changing- –

+1

@ Martinsmith- 좋아, 나는 그것을 표결했다. –

답변

3

되지 않음 ..

나는 가장 좋은 방법은 테이블의 끝 부분에 열을 추가하고 열 ..

다른 옵션의 원하는 순서로 뷰를 생성하는 것입니다 생각합니다. .

는 임시 테이블의 모든 데이터를 넣고 올바른 열 순서와 실제 테이블을 다시 다음 임시 테이블

3

스크립트에서이 작업을 수행 할 빠른 방법은 없습니다에서 실제 테이블에 데이터를 다시 삽입 기껏해야 당신은 그것을 자동화 할 수있다. 기본적으로 새 테이블 스키마 (원하는 위치에 새 열 포함)를 가져 와서 old에서 new으로 모든 데이터를 삽입하고 이전 테이블을 삭제 한 다음 저장 프로 시저를 사용하여 새 테이블의 이름을 old로 바꿉니다 . 다른 사람들이 제대로 불구하고 지적으로

create table [NewTable] 
(
    [old_column_1] int 
    ,[new_column_1] varchar(max) -- new col at location 
    ,[old_column_2] int 
); 

insert into [NewTable] ([old_column_1], [old_column_2]) 
select [old_column_1], [old_column_2] from [OldTable] (nolock); 

drop table [OldTable]; 

sp_rename '[NewTable]', '[OldTable]'; 

, 당신의 열의 위치는 데이터베이스에 아무런 차이가 없습니다 만, 거기에이 여러 개인 이유 달성하기 위해 인간의 욕망이며, 그래서 당신은 몇 가지 옵션이 있습니다.

  1. 위의 스크립트를 사용하여 프로세스를 처리 할 수 ​​있습니다.
  2. 열을 테이블 끝에 추가하고 쿼리의 순서를 제어 할 수 있습니다.
  3. 기본적으로 옵션 2에 대한 확장으로보기를 사용하여 프레젠테이션의 순서를 제어합니다.
  4. SQL Server Management Studio의 GUI를 사용하여 테이블을 눈금으로 표시 할 때 원하는 위치로 끌어 놓을 수 있습니다.
관련 문제