2014-11-04 1 views
0

사용자가 화면에서 수행 한 가장 최근의 세 가지 작업을 기록해야하는 안드로이드 응용 프로그램을 개발 중입니다. 이 레코드는 SQLite 데이터베이스에 저장됩니다.한 번에 SQLite 데이터베이스에있는 세 개의 레코드 만

네 번째 작업이 수행 될 때마다 최신 레코드가 자동으로 새 레코드로 바뀌도록 특정 기능을 구현하고 싶습니다.

몇 가지 방법으로 행 수를 제한했습니다. 그 중 하나는 데이터베이스에서 트리거를 사용하는 것이었고 트리거 사용에 익숙하지 않았습니다.

기능을 구현하는 데 도움을주십시오.

+0

값이 3 개인 경우 간단한 FIFO 버퍼와 함께 SharedPreferences를 사용하십시오. – Simon

+0

@Simon Jim의 대답 –

답변

1

, 나는 3 당신이 말한 임의의 수 ..는 것을 이해 그래서 당신은 큰 데이터베이스를 가지고 있고

사용 트리거 아래 특정 한계 번호 또는 행을 제한 할

CREATE TRIGGER trg1 AFTER INSERT ON table1 
WHEN (SELECT count(*) FROM table1) > 3 
BEGIN 
    DELETE FROM table1 WHERE _id = (SELECT min(_id) FROM table1); 
END; 

_id가 ID 열이라고 가정하면 작동해야합니다. 당신이 _id를 사용하지 개 1 이상의 로그가 (이 increamental 기본 키를 자동 생성 될 때 더 나은 사용 분 (_id)) 같은 밀리 초 부분 내에서 입력되는 것을 가정 오래된 로그를 식별하기위한 날짜 필드를 사용하는 싶지 않는 경우

0

데이터베이스 트리거는 시스템 처리를 데이터베이스 "서버"로 오프로드해야하는 경우 (또는 여러 시스템이 액세스 할 수있는 복잡한 데이터베이스 제약 조건이 있고 제약 조건을 적절하게 적용하지 않을 경우) 유용합니다. 당신은 여기에서 그것을 정말로 필요로하지 않습니다. 그냥 삭제/삽입 (모든 행 또는 최소 최근 삭제하고 가장 최근 삽입). 성능 문제는 발생하지 않습니다.

데이터베이스에 저장해야하는 비즈니스 요구 사항이 없으면 SharedPreferences가 정상적으로 작동하는 것처럼 보입니다. 귀하의 의견에 따라

+0

에 내 의견을 확인하십시오. 저장해야 할 특정 작업과 관련된 많은 데이터가 있습니다. 그래서 sharedpreferences는 아마도 많은 것들을 처리 할 수 ​​없으며 또한 데이터는 데이터베이스에 저장되어야합니다. –

+0

데이터베이스는 일반적으로 이와 같은 일시적인 데이터가 아닌 장기 데이터를 저장하는 데 사용됩니다. 내 대답은 여전히 ​​문제를 해결해야합니다. 트리거가 작동하지만 필요한 것은 아닙니다. 문제에 대한 설명에 따라 다른 데이터베이스 수준 작업 (저장 프로 시저, 인덱스 제약 조건 등)도 마찬가지입니다. – Jim

+0

그래서 일부 알고리즘을 도와 주시거나 그냥 어떻게해야합니까? –

관련 문제