我正在为我的应用程序构建大量日志记录。我可以使用平面文件,但在此之前我考虑sqllite db。我想知道有没有办法创建一个数据库,并在磁盘上达到某个字节大小时自动删除它?我也想在桌面上这样做。因此,如果一个表格大小超过一定的最大值,我将擦除整个表格并开始清理。我想知道在sql中创建表时是否有一个命令可以用来“触发”这个?
答案 0 :(得分:1)
要触发某事,请使用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;