SQL Server : SELECT가있는 계산 필드 보존
-
29-08-2019 - |
문제
우리 회사는 최근에 데이터 마이그레이션 (SQL Server 2005 데이터베이스에서)을 수행했으며 Select로 생성 된 일부 테이블이 원래 테이블의 계산 된 필드를 유지하지 못했지만 대신 SQL Server가 원래 계산. 예를 들어이 테이블이 있다고 가정합니다.
create table Example (
id int not null,
quantity decimal(19,5) not null,
price decimal(19,5) not null,
total as price*quantity
)
SELECT *를 수행 한 후 예제에서 예제에서 다음과 같이받습니다.
create table Example2 (
id int not null,
quantity decimal(19,5) not null,
price decimal(19,5) not null,
total decimal(38,9) null
)
잘못된 필드를 떨어 뜨리고 재현하는 것을 고쳤지만 Select에 생성 된 테이블에 계산 된 필드를 유지하는 방법이 있는지 알고 싶습니다 (일부 특수 SQL 서버 구성 또는 대체 SQL 명령을 사용 함).
미리 감사드립니다.
해결책
나는 당신이 Select In에 이것을 할 수 있다고 생각하지 않습니다. 당신이보기에 대해 선택하는 것처럼, 결과를 가져 와서 새 테이블로 펌핑하는 것입니다.
컴퓨팅 된 열을 먼저 사용한 다음 비 컴퓨터 열의 소스 테이블에서 정기적으로 삽입해야합니다.
다른 팁
정책으로서, 특히 마이그레이션에서 테이블을 만들기 위해 Select를 사용하지 않는 것이 가장 좋습니다. 당신은 계산을 잃을뿐만 아니라 인덱스, 트리거 및 아마도 기본값이나 제약을 잃게됩니다. 마이그레이션에서는 트리거, 인덱스 등을 포함하여 이동하려는 테이블을 항상 스크립트해야합니다.
내 이해는 새로운 테이블이 레코드 세트의 데이터 유형에서 생성된다는 것입니다. 그러나 레코드 세트에는 결과 값이 생성되는 방법에 대한 정보가 포함되어 있지 않으므로 계산 공식이 손실됩니다. (극단적으로, 선택의 소스로 그룹을 포함하는보기를 생각하십시오)