2014-01-27 1 views
0

질문SQL 테이블 주문에서 트리거를 작성하는 SQL 명령을 쓰기 여러 테이블을

를 사용하여 트리거합니다. 트리거는 Order 테이블의 새 주문 행에 제품이 나타날 때마다 Product 테이블의 quantityRemaining 열에서 주문 수량을 뺍니다.

테이블

CREATE TABLE Product(
productNo int PRIMARY KEY, 
productName VARCHAR(30), 
quantityRemaining INT, 
cost DECIMAL (10,2) DEFAULT 0.00); 

CREATE TABLE Orders(
orderNo INT PRIMARY KEY, 
custNo INT CONSTRAINT cusNo_fk REFERENCES CustomerDetails(custNo) ON DELETE CASCADE, 
productNo INT CONSTRAINT prodNo_fk REFERENCES Product(productNo) ON DELETE CASCADE, 
quantity INT); 

시도

CREATE OR REPLACE TRIGGER subtractQuantity 
AFTER INSERT ON Orders 
FOR EACH ROW 

BEGIN 
    UPDATE Product 
    SET quantityRemaining = quantityRemaining - quantity 
    WHERE productNo = :NEW.ProductNo; 
END; 
/

오류

는 '양'변수를 인식하지 못합니다.

+1

주문이 아니기 때문에 테이블 제품 –

답변

3

나는 당신이 참조 :New. 누락 생각 :

CREATE OR REPLACE TRIGGER subtractQuantity 
AFTER INSERT ON Orders 
FOR EACH ROW 

BEGIN 
    UPDATE Product 
    SET quantityRemaining = quantityRemaining - :NEW.quantity 
    WHERE productNo = :NEW.ProductNo; 
END; 

quantityOrders 테이블이 아닌 Product 테이블에 있습니다.

+0

정말 고마워요. 이것을 대답으로 받아 들일 수는 있지만 명성에 사로 잡히지는 않지만 어쨌든 고맙습니다. – user2993831

+1

@ user2993831 :이 답변으로 문제를 해결할 수 있다면 [**이 대답 **을 수락하십시오] (http : // meta.stackexchange.com/q/5234/153998). 이것은 * 당신을 돕기 위해 자신의 시간을 보낸 * 사람들에게 감사를 표합니다. –

관련 문제