Top.Mail.Ru
Ответы

Mysql как задать чтобы в таблицу можно было добавить максимум 5 строк ?

Нужно чтобы в таблицу можно было максимум иметь 5 значений и при добавление новой записи самая старая просто заменялась на новую ? нужно сделать отдельно таблицу последних зарегестрированных 5 пользователей

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок
6мес

ЗАЧЕМ делать отдельную таблицу на 5 зарегистрированных, когда последние 5 зарегистрированных получаются простым запросом:

1
 SELECT * FROM users ORDER BY id DESC LIMIT 5 

Где id - автоинкрементный первичный ключ в таблице users.

И если хочешь работать с 5 последними как с отдельной таблицей, то нужно создавать не реальную таблицу, а представление:

1
 CREATE VIEW last_users AS SELECT * FROM users ORDER BY id DESC LIMIT 5 

И в представлении last_users (которое в запросах используется точно так же, как таблица) ты всегда будешь иметь 5 последних пользователей.

Аватар пользователя
Мастер
6мес

самое простое(чтоб не проверять каждый раз в коде) создай хранимую процедуру к таблице на добавление. а там проверяй, если меньше 5, то добавляй, иначе апдейти запись с меньшим(большим) как там в задании индексом.

Аватар пользователя
Искусственный Интеллект
6мес

ты не можешь ограничить размер таблицы (естественные ограничения на максимальное количество строк и столбцов к этому вопросу не относятся)


база должна заниматься хранением данных... ограничение на количество сохранённых строк делай в коде который эти данные в базу пихает...

Аватар пользователя
Оракул
6мес

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

1
 SELECT * FROM users ORDER BY created 

Далее заменяешь первую строку в коде и делаешь

1
 TRUNCATE table users; 
1
 INSERT INTO users (...) VALUES (...) 

Для 5 записей это вполне нормальный вариант, чтобы не усложнять код, для 10000 я бы уже так делать не стал.

Аватар пользователя
Мудрец
6мес

Странна задача какая-то...
Ну можно как-то так:

12345
 update
tbl
set clmn1 = 'value1', clmn2 = 'value2'
order by date asc
limit 1 

Или добавить where, в котором подзапросом вытаскивать самую старую строку и ее обновлять