2014-03-07 2 views
0

im в процессе построения массивной регистрации для моего приложения. Я мог бы использовать плоские файлы, но до этого я рассматривал sqllite db. Я хотел бы знать, есть ли способ создать базу данных и автоматическое удаление, если достигнут определенный размер байта на диске? Я также хотел бы сделать это на уровне стола. Поэтому, если размер таблицы превысил определенный максимум, я бы стереть всю таблицу и начать чистку. Я хотел знать, было ли во время создания таблицы в sql, если есть команда, которую я могу использовать для «запуска» этого?SQLlite Android Database, как автоматически удалить, если достигнут максимальный размер?

+0

Почему вытирая всю таблицу? Разве не было бы смысла удалять только самые старые записи? –

+0

Да, это также возможно. Есть предположения? – j2emanue

ответ

0

Чтобы вызвать что-то, используйте trigger.

SQLite не имеет встроенного механизма для определения размера байта таблицы; лучшее, что вы можете сделать, это подсчитать количество записей:

CREATE TRIGGER WipeOnOverflow 
AFTER INSERT ON MyTable 
WHEN (SELECT COUNT(*) FROM MyTable) > 1000 
BEGIN 
    DELETE FROM MyTable; 
END; 

или:

CREATE TRIGGER DeleteOneRecordOnOverflow 
AFTER INSERT ON MyTable 
FOR EACH ROW 
WHEN (SELECT COUNT(*) FROM MyTable) > 1000 
BEGIN 
    DELETE FROM MyTable WHERE rowid = (SELECT MIN(rowid) FROM MyTable); 
END; 
+0

да, я знаю о триггерах. Их ключевая концепция, которую я отсутствовала, заключается в том, что мы можем удалить в зависимости от количества строк. Этот ответ приемлем для моей причины, спасибо. – j2emanue

Смежные вопросы