MYSQL
HOME > DB > MYSQL
2018.09.30 / 22:34

트리거에 의한 Java 프로그램의 실행.

GAScripter
추천 수 2

Java 프로그램을 실행하는 업데이트 트리거를 만들고 싶습니다.

T1이름이 지정된 테이블 이 Flag있습니다. Flag변경이 있을 때마다 Java 프로그램을 실행하는 트리거를 실행하려고합니다.

이것이 가능한가?



네, MySQL 사용자 정의 함수 ( MySQL 5.5 FAQ : 트리거 참조 )를 사용하고 lib_mysqludf_sys를 설치하십시오

그런 다음, 예를 들어, 다음과 같이 sys_exec를 호출하는 자체 트리거를 작성할 수 있습니다.

delimiter |
 CREATE TRIGGER testtrigger BEFORE UPDATE ON T1
  FOR EACH ROW BEGIN
   DECLARE result int(10);
   IF NEW.Flag <> OLD.Flag THEN  
     SET result = sys_exec('/path/to/javabin -jar your.jar');
     -- other kind of works and checks...
   END IF;
 END;
|

은 result외부 프로그램의 종료 코드를 포함

이 라이브러리에는 다른 유용한 함수가 있습니다.

  • sys_eval : 임의의 명령을 실행하고 그 결과를 리턴합니다.
  • sys_get : 환경 변수의 값을 얻는다.
  • sys_set : 환경 변수를 생성하거나 기존 환경 변수의 값을 업데이트합니다.
  • sys_exec : 임의의 명령을 실행하고 종료 코드를 반환합니다.

여기에 대한 자세한 정보

dev env에서 시도해보고 ...

이 기능이 필요한지 여부를 결정할 때주의하십시오 . UDF는 모든 데이터베이스 사용자가 사용할 수 있으며 EXECUTE 특권을 부여 할 수 없습니다. 커맨드 스트링이 전달 sys_exec될 때 모든 것을 거의 할 수 있기 때문에이 함수를 드러내는 것은 매우 위험 합니다.

하지만 어쨌든, 나는 Remus Rusanu의 제안에 동의한다.


나는이 포스트가 꽤 오래되었고 유감 스럽지만 최근에 같은 요구 조건을 가지고 있었기 때문에 JNI를 사용하는 MySQL UDF를 만들어서 MySQL 트리거에서 자바 코드를 호출했다. 비슷한 미래 요청에 대한 참조로 게시하고 있습니다. 나는 bitbucket에서 코드를 체크했다. 당신은 여기에서 다운로드 할 수 있습니다 : 
MySQLUDFJavaLauncher 그리고 이곳은 지침 링크 입니다. 
아마 이것은 다른 사람들을 도울 것입니다.