계산 된 열에 사용 된 스칼라 함수, 함수를 업데이트하는 가장 깨끗한 방법은 무엇입니까?


10

데이터베이스에서 스칼라 함수를 업데이트하고 싶습니다. 이 함수는 키 테이블의 여러 계산 열에 사용되므로 업데이트하려고하면 종속성 오류가 발생합니다. 명시 적으로 열을 제거하고 함수를 업데이트하고 열을 다시 추가 할 수는 있지만 열을 많이 낭비하지 않으면 열 순서가 변경되고 의도하지 않은 다른 결과가 발생할 수 있습니다. 더 깨끗한 방법이 있는지 궁금합니다.


4
실제 함수를 호출하는 더미 함수를 작성하여 부분적으로 만 해결했습니다. 물론 서명이 변경되면 다시 끝납니다.

3
불행히도, 나는 이것을하는 "마법"또는 "깨끗한"방법이 없다고 생각합니다. 함수를 수정해야하는 경우 열을 삭제하고 함수를 수정 한 후 모든 열을 다시 추가해야합니다. 이 주위에 방법이 없습니다.
marc_s

@marc_s 글쎄, 그것은 가치가 있습니다, 여기 주위에 많은 똑똑한 사람들 :)
robertc

위의 의견에 동의하십시오. SYNONYM이 여기에 도움을 줄 수있는 범위가 있다고 생각했지만 (계산 열에서 SYNONYM 참조) 다른 객체로 "리디렉션"하기 위해 만든 동의어를 한 번만 변경할 수는 없습니다.
AdaTheDev

1
CLR UDT의 정의를 업데이트하는 것만 큼 여전히 고통스러운 곳은 없습니다 (변경 사항이 단지 방법을 조정하고 스토리지 표현에 전혀 영향을 미치지 않는 경우에도)
Martin Smith

답변:


2

이것은 더 많은 작업이 될 수 있지만 다음과 같은 것을 얻을 수 있습니다.

1-기본 테이블과 업데이트 된 함수에서 PK 만있는 새 테이블을 만듭니다.

2-기존 열을 삭제

3-이전 테이블 이름을 다음과 같이 바꾸십시오. TableName_Base

4- VIEW원하는 순서대로 필드를 사용하여 기본 테이블을 찾아보기 테이블에 조인하는를 작성 하십시오. 원래 테이블 이름이 무엇이든보기의 이름을 지정하십시오.

이것은 잠재적으로 몇 가지 문제를 만들 것입니다 INSERTSUPDATES당신이보기를 통해 액세스하는 것이기 때문에 비록. 이를 처리하기 위해 뷰를 무시하고 테이블에 직접 삽입 할 수 있습니다.


이는 컬럼을 제거하고 다시 추가하는 것과 같이 더 많은 작업과 동일한 수준의 위험처럼 들립니다.
robertc

1
@robertc 이것이 트랜잭션 환경이 높으면 방해가되지 않지만 그래도 여전히 지저분합니다.
JNK
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.