OrderDetail 테이블에있는 주문 정보로 내 주문 테이블을 업데이트하는 트리거를 만들려고합니다. 세부 테이블은 여러 항목에 대해 하나의 순서로 여러 행을 가질 수 있습니다. 이들은 OrderID에 의해 함께 연결됩니다. 내가 지금까지 가지고있는 것은 :테이블 업데이트 트리거
CREATE TRIGGER AfterOrderDetailInsert ON OrderDetail
AFTER INSERT AS
UPDATE Orders
SET OrderTotal = (
SELECT (
SELECT Sum(orderdetail.quantity * OrderDetail.Price *
(1.0 -OrderDetail.ItemDiscount/100.0)
)
FROM orderdetail
WHERE OrderDetail.OrderId = Orders.OrderId
) *
(1 - Orders.OrderDiscount/100.0) *
(1.0 - Orders.CustomerDiscount/100.0)
FROM OrderDetail
INNER JOIN Orders on OrderDetail.OrderID=Orders.OrderID
WHERE OrderDetail.OrderID IN (SELECT OrderID FROM Inserted)
)
하위 쿼리가 두 개 이상의 값을 반환했다는 오류가 나타납니다. 이것은 단지 하나의 총 가치를 돌려 주어야하지 않습니까? SUM을 추가하려고 시도했습니다. Order Order = SUM (SELECT (SELECT OrderTotal Stuff)). 그러나 첫 번째 SELECT 전에 구문 오류가 발생했습니다.
이 SQL Server에서 2000
편집이다 : 나는 ordertotal 어떤 삽입 한 후 업데이트가 원하기 때문에 삽입 한 후에 쿼리를 변경 한
두번째 편집 : 난을 포함하기 위해 노력하고있어 가장 최근에 삽입 된 행의 순서 ID가 있어야하며 한 번에 하나의 행만 삽입되므로 메타 테이블이 삽입됩니다. 이제 "키 열 정보가 충분치 않거나 올바르지 않습니다. 너무 많은 행이 업데이트의 영향을받습니다."라는 오류 메시지가 나타납니다. 주문 총계 열을 보면 내 테이블의 모든 행이 해당 주문 총계로 업데이트됩니다. 그래서 나는 가깝다고 생각하지만 나는 여전히 뭔가를 놓치고 있습니다.