두 번째 테이블의 열 Price
을 업데이트하기 위해 삽입/업데이트 트리거를 사용하고 있습니다.GROUP BY로 트리거 업데이트
삽입 트리거는 완벽하게 작동하는 것 같다,하지만 난 SSMS에서 하나의 레코드를 변경하려고 할 때, 나는 오류 얻을 :
CREATE TRIGGER [dbo].[trgUpdateMasterData] ON [dbo].[tabSparePartMasterData_Temp]
AFTER UPDATE
AS
UPDATE tabSparePart
SET Price = MD.Price
FROM tabSparePart INNER JOIN
(
SELECT inserted.[Material Number (SAP)] AS MaterialNumber, inserted.Price
FROM inserted
GROUP BY [Material Number (SAP)], inserted.Price
) MD
ON tabSparePart.SparePartName = MD.MaterialNumber
: 이것은 내 갱신 트리거가
The row value(s) updated or deleted either do not make the row unique or they alter multiple rows(2 rows).
입니다 나는 tabSparePart
의 Sparepart-Price를 업데이트하기 위해서만 사용하는 tabSparePartMasterData_Temp
테이블에 중복 행이 삽입되어 Material-Number로 그룹화해야합니다. 그러나 나는 그 그룹이 중복을 분류 할 것이라고 생각했다. (가격은 어떤 복제에도 동일하다.)
삽입/업데이트 된 레코드 'MaterialNumber
은 tabSparepart
에서 사용할 수 없습니다. 이 경우이 레코드는 "건너 뜁니다". INNER JOIN
이이를 고려합니까? 트리거
이 오류는 SQL 오류처럼 보이지 않는 내가 클라이언트 코드가 트리거 2 업데이트로 혼란스러워지고 같은데요에 SET NOCOUNT ON
를 추가
오류 메시지가 나타나는 이유는 무엇입니까? 그것은 SQL처럼 보이지 않습니다 ... – gbn
우연히'(tabSparePart.Price)'또는'(tabSparePart.SparePartName, tabSparePart.Price)'에 유일한 제약 조건이 있습니까? 두 개 이상의 동일한 tabSparePart.SparePartName이있는 경우 업데이트가 제약 조건을 위반할 수 있으며 실제로 그 일이 발생할 수 있습니다. –
@ gbn : 트리거를 사용하여 테이블의 가격 값을 변경하려고하면 SSMS (SQL Server Management Studio)가 발생합니다. –