2016-10-21 2 views
4

나는 여전히 msyql 데이터베이스 트리거에있어. 나는 나의 라인에 대해 묻고 싶다 :mysql 데이터베이스 트리거

CREATE TRIGGER secure_dml3 
BEFORE DELETE ON t_pembelian 
BEGIN 
IF (SELECT TO_CHAR (SYSDATE,'DY') IN ('SUN')) OR 
(SELECT TO_CHAR (SYSDATE, 'HH24:MI') NOT BETWEEN '09.45' AND '20.30') 
    THEN 
    IF DELETING THEN 
    CALL RAISE_APPLICATION_ERROR (-20502,'Perubahan pada data hanya dapat dilakukan hanya pada jam kerja.'); 
END IF; 
END IF; 
END 

MySQL은 항상

근처에 오류가 있다고 SUN '(IN)'DY ')'BEGIN이 (SELECT TO_CHAR (SYSDATE, IF ') 또는 (난 정말 당신의 도움이 필요 3.

줄 TO_CHAR (SYSD '를 선택합니다. 당신이 MySQL과 오라클 혼란을 생각하면

+1

구분 기호가 누락되었습니다. 그래서 처음에'delimiter //'를 추가하고 마지막'END'는'END //'이어야합니다. 다음에는 mysql에 TO_CHAR 함수가 없으며 일부 오라클 트리거를 복사 한 것처럼 보입니다. 그리고 mysql에서'RAISE_APPLICATION_ERROR'을 사용할 수없고'SIGNAL'이라고 부릅니다. –

+0

답변 해 주셔서 대단히 감사합니다. 나는 to_char이 어떤 문법으로 대체되어야하는지 다시 묻고 싶다. 그리고 신호로 raise_application_error 만 변경하면됩니까? – rhog23

+0

mysql 문서에서'date_format'과'SIGNAL'을 검사하여 오류를 트리거에서 불러옵니다. –

답변

0

감사합니다. MySQL은하지 exis을 수행에서 t TO_CHAR 사용할 수 있습니다 DATE_FORMAT(SYSDATE,'DY')