2009-12-04 1 views

답변

15

계산 된 열은 다른 계산 된 열을 참조 할 수 없습니다. 비록 당신이 단지 당신이 참조하고 싶은 표현을 반복 할 수 있어야합니다. From MSDN :

계산 된 열은 동일한 테이블의 다른 열을 사용할 수있는 식에서 계산됩니다. 표현식은 비 계산 열 이름, 상수, 함수 및 이들의 조합을 하나 이상의 연산자로 연결할 수 있습니다. 표현식은 부속 조회가 될 수 없습니다.

희망 사항대로 작동하려면 처리해야하는 모든 새로운 문제가 표시되어야한다고 덧붙여 야합니다. 현재 많은 열/행에서 업데이트가 병렬 및 원자 적으로 발생합니다.

따라서 계산 된 열을 사용하는 것이 정확하지 않을 수 있습니다. 계산 된 열을 사용하는 것은 의미가 없습니다. 업데이트가없는 오래된 값을 사용하게됩니다. 당신이 정말로 표현을 중복되지 않도록하고 싶었다면 난 강력하게 그렇게하지 당신에게 를 촉구하지만

, 당신은 , 트리거에서이 작업을 수행 할 수 있습니다. 방아쇠는 재미없고 아주 드문 경우에만 매우 숙련 된 사람들이 사용해야합니다.

+0

_... 모든 종류의 새로운 문제를 제시 할 것입니다. 유일한 문제는 순환 참조 (두 개의 계산 된 열이 서로를 참조하는)를 방지하는 것이고 서버가이를 지원하기 위해 어쨌든 방지해야한다는 것입니다. 그 이유는 열을 계산하는 순서를 결정해야하기 때문입니다. – Trisped

6

against the base columns in the table을 정의해야합니다.

computed_column_expression은 계산 열의 값을 정의하는 표현이다. 계산 된 열 열이 PERSISTED로 표시되어 있지 않은 한 이 실제로 테이블에 저장되지 않은 가상 열입니다. 열은 같은 테이블의 다른 열을 사용하는 식 에서 계산됩니다. 예를 들어 계산 열 은 비용 AS 가격 * 수량을 정의 할 수 있습니다. 표현식은 계산되지 않은 열 이름, 상수, 함수, 변수 및 이들 중 하나 인 조합이 이상의 연산자로 연결될 수 있습니다. 이라는 표현식은 하위 쿼리이거나 별칭 데이터 형식을 포함 할 수 없습니다.

당신이 쉽게 유지 보수를 위해 같은 스칼라 UDF (모두 같은 열 전달)을 사용하는 논리의 일관성을 보장하기 위해 둘 다 리팩토링 수 있지만, 성능 저하가 큰 것, 나는 단지로 스칼라 UDF를 사용 최후의 조치.