2011-10-11 4 views
0

모든 업데이트 또는 삽입을 로그 테이블에 삽입합니다. 그리고 이것을 수행하기 위해 트리거를 사용하고 있습니다.MySQL 트리거가 열 이름을 얻습니다.

제 질문은 어떤 열이 업데이트되었거나 삽입되었는지 알 수있는 방법과 해당 열 이름을 검색하는 방법입니다 ** 값이 아닙니까? 예를 들어

:

연락처 정보가 사용자의 휴대폰을 변경, 내가 넣어 열의 이름을 기록합니다 싶어하지 값이 변경되었습니다.

사용자 | 이름 | 전화

답변

1

업데이트 된 열 이름을 가져 오는 (단순/기본 제공) 방법이 없습니다. 각 열에 대한 수표를 써야합니다. prepare SQL과 information_schema 테이블을 가지고 주위를 둘러 볼 수는 있지만, 각 컬럼에 대한 점검은 더 빠르고 깨끗해질 것이다.

FOR EACH ROW BEGIN 

SET @Cols = 'Updated Columns: '; 

IF OLD.col1 <> NEW.col1 THEN 
@Cols = CONCAT(@Cols, 'col1, '); 
END IF; 

IF OLD.col2 <> NEW.col2 THEN 
@Cols = CONCAT(@Cols, 'col2, '); 
END IF; 

..... 

END 
+0

감사합니다. BTW, @는 무엇을 의미합니까? – Skynight

+0

구체적인 것은 없지만 항상 변수에 @를 붙입니다. 따라서 열 이름과 로컬 트리거/프로 시저 변수를 혼동하지 마십시오. –

관련 문제