다른 엔티티에서 열 값을 설정합니다오라클 SQL 트리거 내가 다른 기업에서 <code>get_out</code> 및 <code>get_in</code> 곱한 가격 값 사이의 차이와 비용 열을 업데이트 할 테이블라고 지불에 대한 업데이 트 트리거를 만들
나는 트리거를 만드는 많은 경험이 없지만 지금까지 내가 방아쇠 만들 때
CREATE OR REPLACE TRIGGER o1 BEFORE UPDATE OF get_out ON payment
FOR EACH ROW
BEGIN
UPDATE payment
SET payment.cost = ROUND (24 * (to_date(payment.get_out)-to_date(payment.get_in)),0) *
(SELECT price FROM payment,book,place
WHERE book.ID_place = place.ID_place
AND payment.ID_payment = book.ID_payment
AND payment.ID_payment = :NEW.payment.ID_payment
)
;
END;
/
나는이 오류가있어 무엇 :
을컴파일 오류로 인해 트리거가 생성되었습니다.
LINE/COL ERROR
---------- -----------------------------------------------------------
7/43 PLS-00049: bad bind variable 'NEW.PAYMENT'
어떤 제안 ? 감사합니다
': NEW.payment.ID_payment' 대신': NEW.ID_Payment'를 사용하십시오. 행운을 빌어 요. –
누군가가 단일 행의 get_out을 수정할 때마다 전체 테이블을 업데이트하겠습니까? 수정할 행의 비용 만 업데이트하려면 new.cost를 케이블로 설정하면됩니다. 트리거에서 UPDATE 문을 실행하지 마십시오. 여기에 드래곤이 있습니다. –
'to_date (payment.get_out) -to_date (payment.get_in)'은'trunc (payment.get_out) -trunc (payment.get_in)'이되어야합니다. 즉 경과 시간 며칠? 'get_in'과'get_out'이 벌써 데이트 인 경우에, to_date를 사용하면 올바르게 할 수 없습니다. –