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
보기의 정의는 무엇입니까? 색인 포함? 조인과 관련된 열의 값을 변경하면 행이 조인 결과에 추가 될 수 있습니다. –
정의로 OP를 편집했습니다. – Rick
@MartinSmith 당신은 저에 대해 생각하게했습니다. 상태 열을 업데이트하고 해당 상태 열이 조인에 사용 중이므로 해당 변경으로 인해 다른 관련 행과 다른보기의 쿼리 행에 다른 행이 생깁니다. 그래서 행 ID를 추가하여 색인에 사용했습니다. 나는 좋은데. – Rick