문제

나는 독서 MySql5.0 댓글 스트림에서 create trigger 페이지 고 묻고 싶 커뮤니티는 경우 권고사항은 좋은지 그들은 여전히 적용을 5.1.무엇이 나타났습과 재생 트리거의 오늘은 불가능하다는 것을 업데이트 필드에 이전 테이블을 사용하여 후 업데이트합니다.

  1. 조심하기 전에 트리거합니다.제약 조건이 발생할 수 있습니다,특히 사용하는 경우 InnoDB 엔진 곳에 삽입 실패할 것이다,하지만 작업에서 당신의 트리거하기 전에 성공할 것이다.
  2. 사용하기 전에 트리거 와 주로에 대한 제약 조건이거나 규칙이 아닌 거래 조정하는 새로운.* 열어야 한다.
  3. 지팡이와 함께 한 후 트리거에 대한 가장 등 다른 작업에 삽입하는 역사의 테이블 또는 업데이트 비정규화.
도움이 되었습니까?

해결책

그렇습니다.AFAIK,MySQL5.1 하지 않은 모든 변경 사항의 의미를 얼마나 트리거 작동합니다.MySQL 도를 지원하는 ANSI/ISO SQL 사양에 대한 트리거를 의미입니다.

당신이 상상할 수 있는 일련의 작업을 실행하는 행으로는 데이터베이스에 기록:

  1. 실행하기 전에 트리거
  2. 평가 제한 적용 NOT NULL, 적용 DEFAULT
  3. 쓰 행하여 데이터베이스
  4. 업데이트 인덱스
  5. 실행 한 후 트리거

면에 도달 한 후 트리거,그것을 너무 늦은 값을 변경할 수 있다.일부 데이터베이스에서,당신은 설정할 수 있습니다 NEW.somecolumn = 1234 하지만 이러한 변화는 자동으로 삭제로 한 후 트리거가 완료됩니다.다른 데이터베이스에서,그것을 이해하는 데 도움이 당신의 실수에 의해 당신에게 오류 중 하나를 정의할 때 트리거 또는 실행할 경우 트리거입니다.

후 트리거가 최고의 사용에 대한 추가 작업의 결과로 삽입 업데이트/의와 같이 행 감사 기록은 준비를 하고 있습니다.한 가지,MySQL 만 허용 하나의 트리거를 당 작업 테이블당,그래서 당신은 또한 사용하기 전에 트리거 값을 변경하고 비즈니스 규칙을 시행하는 데 도움이,지금도 여분의 작업에서 별도니다.그것은 쉽게 업데이트합니다.

에 다른 고려 사항은 당신이해야 할 추가 작업 후에 당신이 알고 행 성공적으로 저장되었습니다.E.g.지 않는 것이 바로 로그인 변화에서 트리거하기 전에,그리고 다음의 변화를 중단하기 때문에의 NOT NULL 제약 조건이 있습니다.

삭제에 대한 행동을 제거해야 합 따라 행 다른 테이블에 여전히 있을 수 있습을 하기 전에 트리거입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top