2014-01-20 2 views
3

У меня есть таблица «log» в базе данных SQLite, где я пишу все мои файлы журналов.Создайте триггер для SQLite, когда вставлена ​​новая запись, чтобы удалить старые записи

Однако я хочу притворяться базой данных добраться до большого - и самого умного способа в этом, заключается в использовании триггера команды вставки - по крайней мере, я так думаю ...

Когда новый рекорд вставляется, запускается триггер, который удаляет все записи старше 10 дней.

Или ...

Когда новая запись вставляется, триггер должен уволят, что удаляет все старые записи, которые превышают определенную сумму (например, 1000).

Мне нужен пример кода.

С уважением, и thx.

ответ

5

Это создаст триггер insert, который удалит что-либо с датой создания, которая больше 10 дней.

CREATE TRIGGER [TRIGGER_NAME] AFTER INSERT ON my_table 
BEGIN 
    DELETE FROM LOG WHERE DATE(CREATE_DATE) > DATE('now', '-10 days'); 
END 

Если вы хотите сделать что-то на основе размера, как вы говорили с 1000 строк, вы можете сделать что-то подобное.

CREATE TRIGGER [TRIGGER_NAME] AFTER INSERT ON my_table 
BEGIN 
    DELETE FROM LOG WHERE ROW_NO NOT IN 
     (SELECT TOP 1000 ROW_NO FROM LOG ORDER BY CREATE_DATE DESC); 
END 

Это выберет 1000 новых строк и удалит все, что нет в этом заявлении select.

+0

Я добавил второй пример, если вы хотите сохранить таблицу определенного размера. –

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