조인을 사용하여 한 번에 새 테이블을 작성하고 채울 수 있습니다.
SELECT
t.*
INTO
dbo.NewTable
FROM
dbo.TableWithIdentity AS t
LEFT JOIN dbo.TableWithIdentity ON 1 = 0
;
왜냐하면의 1 = 0
상태, 오른쪽에는 경기가없고, 따라서 좌측 행의 중복을 방지하고,이 외부 조인하기 때문에, 좌측 열은 어느 제거되지 것이다. 마지막으로 이것이 조인이므로 IDENTITY 속성이 제거됩니다.
따라서 왼쪽 열만 선택하면 데이터 방식으로 만 dbo.TableWithIdentity 의 정확한 사본이 생성 됩니다. 즉, IDENTITY 속성이 제거됩니다.
말했다되는 것을 모두, 최대 버논 염두에 가치가 유지 코멘트에 유효한 점을 올렸다. 위 쿼리의 실행 계획을 보면 :
소스 테이블이 실행 계획에서 한 번만 언급 된 것을 알 수 있습니다. 다른 인스턴스는 옵티 마이저에 의해 제거되었습니다.
따라서 옵티마이 저가 계획에서 조인의 오른쪽이 필요하지 않다고 올바르게 설정할 수 있다면 향후 버전의 SQL Server에서는 IDENTITY 속성이 필요하지 않을 것으로 예상 할 수 있습니다. 쿼리 계획에 따라 더 이상 소스 행 세트에 다른 IDENTITY 열이 없으므로 제거되었습니다. 즉, 위의 쿼리는 어느 시점에서 예상대로 작동하지 않을 수 있습니다.
그러나 ypercubeᵀᴹ 에서 올바르게 지적한 바와 같이 지금까지 매뉴얼 은 조인이 있으면 IDENTITY 속성이 유지되지 않는다고 명시 적으로 설명했습니다.
기존 ID 열이 새 테이블로 선택되면 SELECT 문에 조인이 포함되어 있지 않으면 새 열이 IDENTITY 속성을 상속합니다.
따라서 매뉴얼에서 계속 언급하는 한, 동작이 동일하게 유지 될 것입니다.
했네 Shaneis 및 ypercubeᵀᴹ 채팅에서 관련 항목을 데리고합니다.
JOIN (SELECT 1) AS dummy ON 1 = 1
도 작동?