2016-09-07 3 views
0

램프 스택에서 MySQL 데이터베이스를 사용하고 있습니다. 나는 간단한 엔트리가있는 테이블을 가지고있다. 이 항목은 10 분이 지나지 않아 자동으로 삭제됩니다. "사용 중"은 삽입, 업데이트 또는 단순히 SELECT를 통해 요청 된 것으로 정의됩니다 (분명히 삭제는 중요하지 않음). 나는 이것을 위해 순수한 MySQL을 사용하고 싶지만 아직 해결책을 찾을 수 없다. 필요한 경우 필드는 table.time_used 속성을 가질 수 있지만 아직 필요하지 않습니다. 그것은 하나의 문제를 만들 수 있습니다. TRIGGER와 PROCEDURE 조합에 대해 생각해 보았지만 아직 그 중 하나는 파악할 수 없었습니다.10 분이 지나지 않은 행 삭제 ("만료")

cron과 같은 타사 응용 프로그램을 사용할 수 있지만 cron이 옵션이 아닌 다른 환경으로 프로젝트를 복사 할 수 있기 때문에 MySQL 솔루션을 선호합니다.

테이블과 table.expiration_time 필드를 사용하여 SELECT 문을 변경하여이 작업을 수행 할 수도 있지만 더 정확한 작업 일 수는 있지만 두 번째 작업은 필요하지 않습니다. 대략 10 분이며, 매우 제한된 기계에서만 작동하므로 깨끗하게 유지하고 싶습니다.

미리 감사드립니다. :)

답변

1

모두lastUsed datetime 업데이트를 제어하는 ​​저장 프로 시저를 통해 액세스하는 것이 좋습니다.

Adhoc 액세스 외부 저장 프로 시저lastUsed 애스 팩트를 업데이트하지 않습니다. 다른 말로하면 그것은 눈살을 찌푸리게 될 것입니다. 그것은 자연스럽게 사용될 수 있지만, 엄격한 통제가 없으므로 기대치를 벗어날 것입니다.

이것을 수행하는 다른 모든 메커니즘은 MySQL 외부에있는 전체 스택 서비스에 의존합니다.

MySQL의 내장 된 Events 기능을 통해 자동 삭제가 발생합니다. 내 프로필 페이지에서 3 개의 이벤트 관련 링크가 있습니다. 보고 시작하는 사람은 Here입니다.

+0

정확하게 이해한다면 순수 MySQL로 버전을 삭제할 방법이 없습니다. 따라서 cron 등을 사용할 수 없으므로 권장하는 MySQL 프로 시저 방식이 최선의 선택 일 수 있습니다. –