6
트리거 내부에서 모든 열 이름을 반복 할 수 있습니까?mysql 트리거의 열을 통한 루프
시나리오 : 수정 된 테이블의 모든 열을 기록합니다. 일부 값이 변경되지 않은 경우 값을 변경하지 마십시오.
DROP TRIGGER IF EXISTS t_before_update_test;
DELIMITER $$
CREATE TRIGGER t_before_update_test
BEFORE UPDATE ON test
FOR EACH ROW
BEGIN
-- Loop here for all columns, not just col1
IF OLD.col1 <> NEW.col1 THEN
INSERT INTO change_logs(
log_on, user_id,
table_name, colum_name,
old_data, new_data
) VALUES (
UNIX_TIMESTAMP(NOW()), '0',
'test', 'col1',
OLD.col1, NEW.col1
);
END IF;
-- process looping all columns
-- col1, col2, ... should be dynamic per loop
END $$
이것은 작업 복사본 예입니다. 이제 OLD 또는 NEW에서 사용 가능한 모든 열을 반복해야합니다.
링크에서 호출 : 여기 링크의 커플 스택 오버플로에 대해서만 대답을 볼 수 있습니다. 링크가 유효하지 않을 경우를 대비하여이 게시물에 해당 포인트를 포함하는 것이 좋습니다. –
트리거 내부의 링크에서 솔루션을 사용하는 방법이 명확하지 않습니다 (OLD 및 NEW에 액세스해야하는 경우). – adinas