Как хранить только 10 строк в таблице MySQL? Старшие строки должны быть удалены при добавлении новой строки, но только после того, как таблица имеет 10 строк.Ограничение строк таблицы
Пожалуйста, помогите мне
Как хранить только 10 строк в таблице MySQL? Старшие строки должны быть удалены при добавлении новой строки, но только после того, как таблица имеет 10 строк.Ограничение строк таблицы
Пожалуйста, помогите мне
Вы могли бы добиться этого с after insert триггером, удалите строку, в которой он является дата мин. например DELETE FROM myTable WHERE myTimestamp = (SELECT MIN (myTimestamp) FROM myTable), но это теоретически может удалить несколько строк в зависимости от детализации ваших обновлений.
У вас может быть инкрементальная последовательность и всегда просто удалять min этой последовательности.
Вопрос в том, почему вы хотите это сделать? Это немного необычное требование.
Базовый пример (не подтвержден/выполнен, у меня нет mySQL на этой конкретной машине) будет выглядеть примерно так.
CREATE TRIGGER CycleOldPasswords AFTER INSERT ON UserPasswords FOR EACH ROW
set @mycount = SELECT COUNT(*) FROM UserPasswords up where up.UserId = NEW.UserId;
if myCount >= 10 THEN
DELETE FROM UserPasswords up where up.Timestamp = (SELECT min(upa Timestamp) FROM UserPasswords upa WHERE NEW.UserId = upa.UserId) AND NEW.UserId = up.UserId;
END
END;
По словам Джеффа, вы можете сохранить каждую строку, почему вы хотите удалить стариков? – zessx
его старая таблица паролей, когда пользователь вводит новый пароль, он должен сравниваться со старыми 10 строками, если его присутствующий, тогда этот пароль не должен меняться так ... –
Надеюсь, вы сравниваете хэши, а не сырые текстовые пароли ... Так что это составляет десять строк на пользователя? Я бы серьезно подумал о порядковом номере в этом случае, в триггере после вставки, удалите min последовательности, где id пользователя = идентификатор пользователя вставленной строки. Надеюсь, это имеет смысл. –
Вы можете извлечь последний вставленный идентификатор, когда вставлена первая строка, и сохранить его в переменной. Когда вставлено 10 строк, удалите строку с идентификатором < id первой вставленной записи. Попробуйте.
первую очередь вставить все значения с помощью вставки запроса , а затем запустить этот запрос
delete from table_name where (cond) order by id desc limit 10
необходимо указать идентификатор или время в одном столбце
, что запрос вам нужно ??? Я не хочу, чтобы я хотел хранить только десять ... –
@somebody нет необходимости в запросе. Более того, почему? Я никогда не удаляю ни одной школы мысли. Что произойдет, если вам нужна информация, которую вы удаляете в будущем? – Ben
@triveni Если какой-либо ответ сработал для вас, тогда перейдите и установите флажок справа от этого ответа. –