2008-09-04 3 views
8

SQL Server에서 열을 삭제하지 않고 계산 된 열을 변경하는 방법을 알고있는 사람이 있습니까? 열을 계산 열로 사용하지 않고 열에 직접 데이터를 저장하기를 원하지만 현재 값을 유지하려고합니다.SQL Server Alter Computed Column

이것도 가능합니까?

답변

9

난 당신이

이 계산 된 열의 값으로 열이 다음 계산 열을 삭제하는 테이블에 업데이 트를 다른 열을 추가 할 수 있습니다 알고 있지만, 여기에 뭔가하지 않는 것이

1

좋아, 그럼 내가 이걸 똑바로 보게. 현재 계산 된 열을 가져 와서 일반 제인 데이터 열로 만들고 싶습니다. 일반적으로 이것은 열을 삭제하지만 열에 데이터를 보관하려고합니다.

  1. 원본 테이블과 생성 된 열의 기본 키 열을 사용하여 새 테이블을 만듭니다.
  2. 원본 테이블의 데이터를 새 테이블로 복사하십시오.
  3. 원본 테이블의 열을 변경하십시오.
  4. 데이터를 다시 복사하십시오.

내가 무엇을 하든지 관계없이 열을 변경하면 삭제됩니다. 이 방법은 다소 복잡하지만 그렇게 나쁘지는 않으며 데이터를 저장합니다.

[편집 : @ SqlMenace의 대답은 훨씬 쉽습니다. :) 저주의 저주! :)]

1

하는 경우 (클라이언트 코드를 손상시키지 않도록) 열 이름을 유지해야하는 경우 열을 삭제하고 같은 이름의 저장된 열을 다시 추가해야합니다. 단일 트랜잭션에서 (SQLMenace 솔루션 라인을 따라) 변경함으로써 중단 시간없이이 작업을 수행 할 수 있습니다. 다음은 일부 의사 코드입니다.

 
begin transaction 
    drop computed colum X 
    add stored column X 
    populate column using the old formula 
commit transaction