주문한 수량에 따라 재고 수량을 확인하는 업데이트 트리거를 만들려고합니다. 해당 제품이 충분하지 않은 경우 메시지가 저장됩니다.특정 삽입 값이있는 행을 검색 한 다음 해당 행의 값을 삽입 값과 비교합니다.
나를 트리거를 생성시키는 것하지만 테스트 할 때, 그것은 오류를 표시
나 ' "하위 쿼리. 이것은 서브 쿼리는 =,! =, ... 다음에 올 때 허용되지 않는 1 개 이상의 값을 반환" 먼저 삽입 된 값과 일치하는 제품 ID로 특정 행을 검색 할 때 하나 이상의 값을 반환하는 방법을 실제로 이해하지 못합니다. 그런 다음 UnitsInStock과 삽입 된 값을 비교합니다.
는 여기에 지금까지이 작업은 다음과 같습니다
이CREATE TRIGGER tr_check_qty
ON OrderDetails
FOR UPDATE
AS
DECLARE @ProductID int,
@Quantity int
SELECT @ProductID = ProductID,
@Quantity = Quantity
FROM inserted
WHERE @ProductID = (SELECT ProductID FROM Products)
IF
@Quantity > (SELECT UnitsInStock FROM Products)
BEGIN
PRINT 'Not enough product in stock'
ROLLBACK TRANSACTION
END
당신의 방아쇠는 깨졌습니다. - 당신은'inserted'은 한 줄만 포함한다고 가정하고 있습니다. 이것은 일반적으로 정확한 가정이 아닙니다. (트리거는 * 문의 *마다 한번씩 * 행당 한번 실행되지 않습니다) –