2014-06-30 5 views
1

여러 테이블에서 필요한 모든 데이터를 전체 텍스트 검색 할 수 있도록 테이블을 조인하고 해당 뷰에 클러스터 된 인덱스를 만든보기를 만들었습니다. 그것은 잘 작동하지만, 고유 인덱스 'IX_vPRs'와 함께 개체 'dbo.vPRs'에 중복 키 행을 삽입 할 수 없습니다. 중복 키 값은 (47)입니다. 이 문을 proc에서 실행할 때의 오류 :인덱스 원인으로보기 업데이트에 중복 키 행을 삽입 할 수 없습니다.

UPDATE prHdr 
SET PRStatus=3 
WHERE [email protected] 

오류 설명과 같이 업데이트 문이 뷰에 행을 삽입하는 이유를 알지 못합니다.

아이디어가 있으십니까?

정의 : 쿼리시이 값을 얻기 위해 기본 테이블로 이동하지 않도록

CREATE VIEW [dbo].[vPRs] 
    WITH SCHEMABINDING 
AS 
SELECT a.PrSeriesId, 
     DivisionId [Division], 
     DateStart, 
     DateEnd, 
     Showroom, 
     VendorId, 
     VendName, 
     PlmVendorId, 
     b.Style, 
     e.Description [Status], 
     f.FullName Requester, 
     COUNT_BIG(*)AS countbig 
FROM [dbo].[PrHdr] a 
JOIN [dbo].[PrDtl] b ON a.prId=b.prId 
JOIN dbo.PrSeries p ON a.PrSeriesId=p.PrSeriesId 
JOIN [dbo].[PrStatus] e on a.PrStatusId = e.PrStatusId 
JOIN [dbo].[User] f on p.UserCreate=f.UserName 
GROUP BY a.PrSeriesId, 
     DivisionId, 
     DateStart, 
     DateEnd, 
     Showroom, 
     VendorId, 
     VendName, 
     PlmVendorId, 
     b.Style, 
     e.Description, 
     f.FullName 

GO 

/****** Object: Index [IX_vPRs] Script Date: 6/30/2014 10:45:49 PM ******/ 
CREATE UNIQUE CLUSTERED INDEX [IX_vPRs] ON [dbo].[vPRs] 
(
    [PrSeriesId] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
GO 
+0

보기의 정의는 무엇입니까? 색인 포함? 조인과 관련된 열의 값을 변경하면 행이 조인 결과에 추가 될 수 있습니다. –

+0

정의로 OP를 편집했습니다. – Rick

+0

@MartinSmith 당신은 저에 대해 생각하게했습니다. 상태 열을 업데이트하고 해당 상태 열이 조인에 사용 중이므로 해당 변경으로 인해 다른 관련 행과 다른보기의 쿼리 행에 다른 행이 생깁니다. 그래서 행 ID를 추가하여 색인에 사용했습니다. 나는 좋은데. – Rick

답변

0

인덱싱 된 뷰는 뷰의 일부로서 데이터를 구체화.

보기 정의가 올바르지 않거나 고유 색인 denfintion이 올바르지 않습니다.

관련 문제