사용자가 MySQL 데이터베이스 테이블을 변경하기위한 HTML 프론트 엔드가있는 PHP webapp가 있습니다. 또한 이전 레코드에 대한 아카이브 테이블을 만들어 사용자가 레코드를 변경할 때 레코드를 옮길 수있게했습니다.데이터베이스 레코드를 추적 할 수있는 가장 좋은 방법은 무엇입니까?
하지만 이전 기록을 아카이브 테이블에 저장하고 싶습니다. 특히 어떤 컬럼이 변경되었는지 확인하고자합니다.
웹 기반 데이터베이스 프론트 엔드의 성격으로 인해 사용자가 레코드를 열 때마다 스크립트의 행 내용을 제공하여 해당 열을 value
필드로 전달할 때마다 어떤 열이 변경되었는지 쉽게 알 수 없습니다. HTML input
요소가 내 프런트 엔드에 있습니다 (또는 select
, textarea
등).
사용자가 input
필드에서 값을 변경하고 데이터를 제출하면 브라우저는 변경된 필드뿐만 아니라 사용자가 변경 한 값을 포함하여 처음부터 프론트 엔드에 제공된 모든 데이터를 전송합니다 . 따라서 변경되지 않은 값으로 행을 업데이트해야합니다. 예에서
Original data Passed to frontend Changes by user Data being sent back
id=827
val1=arthur val1=arthur val1=arthur
val2=ford val2=ford val2=ford
val3=tricia val3=tricia val3=trillian val3=trillian
val4=zaphod val4=zaphod val4=zaphod
val5=marvin val5=marvin val5=marvin
.
.
.
위 단순히 아카이브 테이블에서 현재 레코드의 복사본을 만들고
val5
에
val1
의 값으로 '라이브'레코드를 업데이트 할 데이터를 백엔드를 제출 한 후. 이제
나는 마지막 변경, 예를 들어 당신이 변경되었습니다 어떤 정보를 볼 수있는 페이지,하고 싶습니다 :
2014-04-08: User 'douglas' changed val3 in row #827
또는 ...
2014-04-08: User 'eoin' changed val1, val2 and val3 in row #137
순간을 가능한 솔루션은 두 가지입니다.
현재 행과 아 + 이브 테이블에서 해당 행을 비교하여 행이 다른 C 럼 (!)의 이름을 가져옵니다. 이 작업을 수행하는 MySQL 함수가 있습니까? PHP에서 이것을 구현해야합니까?
프론트 엔드에서 데이터를받은 후 PHP 백엔드에서 변경된 값만 저장하기 위해 원래 레코드와 다른 값을 즉시 확인하십시오. 그래서 나는 문제의 기둥을 자동으로 가질 것이다.