2014-11-10 5 views
1

트리거 사용 STOCK 테이블의 기존 BARCODE와 함께 입력 된 BARCODE와 일치하는 SOLDITEMS 테이블에 레코드가 삽입 될 때 SOLD 열 (STOCK 테이블)을 업데이트하려고합니다.insert into ORACLE TOAD

CREATE OR REPLACE TRIGGER SCOTT.stock_after_sold AFTER INSERT ON SCOTT.solditems 

FOR EACH ROW 

DECLARE 
b SCOTT.solditems.barcode%type; 

BEGIN 
update SCOTT.stock set sold = :new.quantity where b = stock.barcode; 
DBMS_OUTPUT.PUT_LINE('sold successfully inserted into stock table'); 

END stock_after_sold; 
/

이것은 열을 업데이트하지 않습니다.

답변

2

이 행

b SCOTT.solditems.barcode%type; 

만 속성을 선언하지만 당신은 어떤 값으로 초기화하지 않으므로이 행

update SCOTT.stock set sold = :new.quantity where b = stock.barcode; 

는 초기화되지 않은 값으로 stock.barcode를 비교합니다.

이 같은 업데이트 행을 쓰기 B를 필요로하지 않습니다

update SCOTT.stock set sold = :new.quantity where :new.barcode = stock.barcode; 
나는이 코드를 작성할 수 있습니다 어떻게 다른
+0

? 나는 또한 시도했다 : 각 줄에 대해 각 SCOTT.solditems에 삽입 후 SCOTT.STOCK_AFTER_SOLD를 만들거나 바꾸기 DECLARE SCOTT.stock.sold % type; BEGIN 업데이트 재고 집합 = (선택 : newitai에서 solditems.barcode = stock.barcode); DBMS_OUTPUT.PUT_LINE (​​'주식 표에 성공적으로 판매되었습니다'); END stock_after_sold; / –

+0

편집 된 답변보기 – Michal

+0

훌륭하게 작동합니다! 고맙습니다 :) –