2014-01-16 4 views
0

Я хочу создать таблицу, которая должна содержать максимум 5 строк, когда есть 6-я операция вставки, последняя строка должна быть удалена.Ограничение максимального числа строк в SQLite

Я хочу max 5 строк, и я хочу сделать это в базе данных SQLIte в android.

, пожалуйста, предложите мне простой запрос.

+0

Этот тип операции обычно обрабатывается триггером вставки. Я не знаю, является ли это «простым». –

+0

Можете ли вы сказать мне один пример триггера insert в SQLite bro :) –

+0

Я удалил тег MySQL, потому что вопрос, похоже, о SQLite. –

ответ

0

Вы можете сделать подсчет строк в своем приложении. Если он возвращает более четырех, или eaqual до пяти строк, вы удаляете последнюю строку перед вставкой новой.

UPDATE: я сделал немного тестирования на столе, который я назвал test_table, и добавил этот триггер:

DELIMITER $$ 
CREATE TRIGGER `schema_name`.`trigger_name` BEFORE INSERT ON `database_name`.`test_table` 
FOR EACH ROW 

if (select count(*) from test_table)> 4 /* count records to see if it exeeds your limit */ 
    then 
     delete from test_table where id=(SELECT MAX(id) FROM test_table LIMIT 1); /* delete last row */ 
END if; 
END 

Когда я пытаюсь вставить шестую строку я получаю эту ошибку:

ERROR 1442: 1442: Can't update table 'test_table' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. 

Я искал и нашел этот ответ: https://stackoverflow.com/a/21117071/1355562 - что привело меня к http://dev.mysql.com/doc/refman/5.6/en/stored-program-restrictions.html.
В разделе «Ограничения для хранимых функций», пункт 5, говорит: «... не может изменить таблицу, которая уже используется ...»

Похоже, вы должны сделать это в вас приложения бро;)

ops .. только что заметил, что вы работаете с MySQLlite .. Может быть, все по-другому. Это было для MySQL ... Извините, что ...

+0

Невозможно сделать это с помощью любого запроса sql sq? –

+0

посмотрите это сообщение: http://stackoverflow.com/questions/17963694/mysql-trigger-to-delete-old-record-and-insert-new-one. Это может дать вам ответ, который вы ищете – ThomasK

+0

Я обновил свой ответ .. – ThomasK

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