MySQL 트리거 사용
상기 설명에서 볼 수 있듯이 트리거는 응용 프로그램의 논리를 간소화하고 성능을 향상시킬 수 있다. 이것은 트리거를 사용하여 응용 프로그램과 서비스 측의 상호작용 횟수를 줄였기 때문이다.또한 트리거는 자동 업데이트 귀일화와 통계 데이터를 완성하는 데 도움이 된다.예를 들어 우리는 트리거를 사용하여 거래 주문서의 총 금액, 주문서 수와 평균 객단가를 자동으로 통계할 수 있다.그러나 MySQL의 트리거는 응용 장소도 매우 제한되어 있다. 만약에 다른 데이터베이스 제품의 트리거를 사용한 적이 있다면 MySQL도 같은 기능을 실현할 수 있다고 생각하지 마라. 예를 들어
CREATE TRIGGER BEFORE|AFTER
ON FOR EACH ROW
BEGIN
;
END
실행 문장 목록은 하나 이상의 문장을 지원하며, 다음은 여러 문장의 예입니다.
DELIMITER $$
CREATE TRIGGER user_create_log AFTER INSERT ON t_users FOR EACH ROW
BEGIN
DECLARE log_info VARCHAR(40)character set utf8;
DECLARE description VARCHAR(20) character set utf8;# ,
SET description = " is created";
SET log_info = CONCAT(NEW.user_name, description); # CONCAT
INSERT INTO logs(log) values(log_info);
END $$
DELIMITER ;
InnoDB의 트리거와 관련된 조작은 원문을 포함하여 모두 같은 사무에 있기 때문에 원자성을 만족시킨다.그러나 InnoDB의 트리거를 사용하여 다른 테이블과 데이터의 일치성을 검사할 때, 이때 조심하지 않으면 부정확한 결과를 초래할 수 있다.예를 들어 트리거를 사용하여 외부 키를 시뮬레이션해야 한다고 가정하면 BEFORE INSERT 트리거를 사용하여 다른 테이블에 해당하는 기록이 있는지 확인할 수 있지만, 트리거가 다른 테이블 데이터를 읽을 때 SELECT FOR UPDATE를 사용하지 않으면 병발성 문제로 인해 오류가 발생할 수 있습니다.트리거에 결함이 있지만 사용할 수 없다는 뜻은 아니다.반대로 트리거 자체도 유용하다. 특히 제약, 시스템 유지 보수 임무와 통계 데이터를 최신 상태로 유지하는 데 유용하다.
트리거를 사용하여 데이터 줄의 변화를 기록할 수도 있다.이렇게 하면 오프라인 수동 조작 데이터베이스 기록 (예를 들어 오류 데이터 복구) 도 기록될 수 있다.그러나 주의해야 할 것은 다른 셀프 키 테이블에 데이터를 삽입할 때 조심해야 한다는 것이다. 이것은 복제적인 문장 표현에 문제가 있을 수 있다. 왜냐하면 셀프 부가가치는 두 개의 같은 부본 값에 대해 다르기 때문이다.
맺음말:
트리거는 유한한 장소에서 통계 데이터, 데이터 테이블 변경 로그 등 장점을 발휘할 수 있다.그러나 빅데이터 양의 업데이트는 한 줄씩 촉발되기 때문에 효율을 떨어뜨리는 결함도 있다.그리고 MyISAM 엔진은 원자성을 보장할 수 없습니다.따라서 응용 장면에 트리거가 있는지 여부에 따라 해야 한다.
이상은 MySQL 트리거의 사용에 대한 상세한 내용입니다. MySQL 트리거에 대한 더 많은 자료는 저희 기타 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.