다음과 같은 트리거를 만들었습니다.
create or replace
TRIGGER "TRIG_DECLENCHEMENT_PARAM"
AFTER UPDATE ON t_balise
FOR EACH ROW
WHEN (NEW.no_serie like '2%')
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
P_UPDATE_BALISE(:NEW.no_serie, :NEW.date, :NEW.vitesse);
COMMIT;
END;
P_UPDATE_BALISE
다른 테이블을 업데이트하는 다른 데이터베이스의 메서드입니다. 그렇게 잘 작동합니다. 이 트리거를 업데이트하고 조건 NEW.no_serie like '2%'
을로 변경하고 싶습니다 NEW.no_serie between 200 and 299
. Alter Trigger...
Trigger를 업데이트 하는 스크립트가 있습니다 .
이 alter trigger
명령문 은 "데이터베이스 트리거를 활성화, 비활성화 또는 컴파일"할 수만 있습니다. 설명서에는
참고 :
이 문은 기존 트리거의 선언 또는 정의를 변경하지 않습니다. 트리거를 다시 선언하거나 재정의하려면 OR REPLACE 키워드와 함께 CREATE TRIGGER 문을 사용합니다.
새 조건을 갖도록 기존 명령문 (어쨌든 소스 제어에 있어야 함)을 수정해야합니다.
create or replace
TRIGGER "TRIG_DECLENCHEMENT_PARAM"
AFTER UPDATE ON t_balise
FOR EACH ROW
WHEN (NEW.no_serie between 200 and 299)
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
P_UPDATE_BALISE(:NEW.no_serie, :NEW.date, :NEW.vitesse);
COMMIT;
END;
이 비교를 문자열에서 숫자로 변경했습니다. 바라건대 no_serie
실제로 숫자이고 그것을 문자열로 잘못 취급하고 원하지 않는 값 (2, 20, 2000 등)을 트리거하는 이전 검사였습니다.
직접 관련이없는,하지만에 업데이트하면 것을 자율적 인 거래 수단이 트리거 가진 t_balise
롤백이 호출에 의해 변경 사항이하는 P_UPDATE_BALISE
것입니다 하지 롤백 - 그들은 독립적으로 최선을 다하고 했으므로합니다. 이것은 일반적으로 원하는 것이 아닙니다.이 테이블에 대한 업데이트와 다른 곳에서 변경된 사항 (다른 테이블에 대해 말한 것입니다. 절차가 실제로 동일한 테이블을 업데이트하기 때문에이 작업을 자율적으로 만들지 않았기를 바랍니다 )은 일반적으로 원자 적이며 동일한 거래의 일부. 원 자성을 깨는 것은 매우 드물게 필요하거나 바람직하지 않은 것이므로 이것이 실제로 의도 한 것이며 더 깊은 문제를 피하기위한 해킹이 아닌지 확인하겠습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다