사용자가 데이터를 편집 할 때 별도의 테이블에 변경 사항을 저장하는 트리거가 있습니다. 이 데이터는 현재 데이터 아래의 웹 페이지에 사람이 읽을 수있는 형식으로 작성됩니다. 즉,MySQL 트리거에서 IF 문을 사용하여 여러 행 삽입하기
23/04/09 22:47 James Smith는 "George Hill"에서 "George Hilling"으로 임차인 이름을 변경했습니다.
방아쇠가이 모양처럼 보입니다. (이것은 요약 된 버전입니다.)
두 질문 :
A)가이 상당히 비용이 많이 드는 성능 현명하고 수행 할 수있는 더 나은 방법이 그렇다면? B) 모든 IF없이이 작업을 수행 할 수있는 간단한 방법이 있습니까? 아마도 일종의 루프를 사용하고 있을까요?
DELIMITER //
CREATE TRIGGER repair_history AFTER UPDATE ON repairs
FOR EACH ROW
BEGIN
INSERT INTO repair_edit SET repair_id=NEW.repair_id,
edit_date_time=NEW.edit_date_time, edited_by=NEW.edited_by;
IF OLD.tenant_name != NEW.tenant_name THEN
INSERT INTO repair_history SET edit_id=LAST_INSERT_ID(), field='tenant_name',
former_field_value=OLD.tenant_name, new_field_value=NEW.tenant_name;
END IF;
IF OLD.priority != NEW.priority THEN
INSERT INTO repair_history SET edit_id=LAST_INSERT_ID(), field='priority',
former_field_value=OLD.priority, new_field_value=NEW.priority;
END IF;
IF OLD.property_id != NEW.property_id THEN
INSERT INTO repair_history SET edit_id=LAST_INSERT_ID(), field='property_id',
former_field_value=OLD.property_id, new_field_value=NEW.property_id;
END IF;
IF OLD.type_id != NEW.type_id THEN
INSERT INTO repair_history SET edit_id=LAST_INSERT_ID(), field='type_id',
former_field_value=OLD.type_id, new_field_value=NEW.type_id;
END IF;
END; //
DELIMITER ;
MySQL이 열은 트리거가의 컬럼에 인덱스에 방법을 몰라? – tpdi
나는 그것을 알지 못했다.하지만 내가 보낸 포럼 응답에 따르면. –