powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
10 сообщений из 10, страница 1 из 1
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
    #38419959
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица t1 как сделать так чтобы новые добавления перезаписывали более старые. И как сделать чтобы записей было только 15?
...
Рейтинг: 0 / 0
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
    #38420085
seejil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странный вопрос.
Не вижу сложности update вместо insert'a делать. Или insert on duplicate key update
...
Рейтинг: 0 / 0
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
    #38420092
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
seejilСтранный вопрос.
Не вижу сложности update вместо insert'a делать. Или insert on duplicate key update

О, апдейтить более старую запись?
...
Рейтинг: 0 / 0
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
    #38420114
keinW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если "раскидать" проблему на составные части, то решение очевидно (не претендую на оптимальность и оригинальность):
1. В имеющуюся таблицу нужно добавить колонку-флаг "LAST" Значение флага 1 и 0 (true-false) (0/false по-умолчанию). Добавить колонку row_number, значение которой будет соответственно 1...15
2. При добавлении новой записи в таблицу:
select row_number into :r_num where last=1;
если возвращается пустой набор - значит записей в таблице нет =>new_row=1;
если возвращается значение row_number, то
if(r_num+1<=15) then new_row=r_num+1;
else new_row=1;
3. Новая запись:
Есть ли строчка с таким номером строки? select count(*) into :cnt;
if (cnt<15) then (INSERT into T1 (row_number, col1...col3, last) values (new_row, xxxx...xxx, 1));
else (Update table t1 set col1=.... last=1 where row_number=new_row);

4. Снимаем флаг Last со старой записи: update t1 set last=0 where row_number=r_num;

Как-то так. Осталось обернуть это в похапэ.
...
Рейтинг: 0 / 0
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
    #38420205
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
keinWЕсли "раскидать" проблему на составные части, то решение очевидно (не претендую на оптимальность и оригинальность):
1. В имеющуюся таблицу нужно добавить колонку-флаг "LAST" Значение флага 1 и 0 (true-false) (0/false по-умолчанию). Добавить колонку row_number, значение которой будет соответственно 1...15
2. При добавлении новой записи в таблицу:
select row_number into :r_num where last=1;
если возвращается пустой набор - значит записей в таблице нет =>new_row=1;
если возвращается значение row_number, то
if(r_num+1<=15) then new_row=r_num+1;
else new_row=1;
3. Новая запись:
Есть ли строчка с таким номером строки? select count(*) into :cnt;
if (cnt<15) then (INSERT into T1 (row_number, col1...col3, last) values (new_row, xxxx...xxx, 1));
else (Update table t1 set col1=.... last=1 where row_number=new_row);

4. Снимаем флаг Last со старой записи: update t1 set last=0 where row_number=r_num;

Как-то так. Осталось обернуть это в похапэ.

Возможно спасибо за решение, мне известно что есть как бы встроенная то ли функция то ли ещё что, в самом Mysql которая решает эту задачу.
Типа, указываю количество строк в таблице и она сама перезаписывает более старые, может знает об этом кто?
...
Рейтинг: 0 / 0
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
    #38420246
keinW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы хотите/имеете возможность, то возможно это реализовать триггером на апдейт/инсерт
...
Рейтинг: 0 / 0
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
    #38420517
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
keinWЕсли вы хотите/имеете возможность, то возможно это реализовать триггером на апдейт/инсерт

Вот как Вы думаете, что лучше использовать, то что вы написали или триггер?
...
Рейтинг: 0 / 0
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
    #38421194
keinW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы все такие вещи "пихал" в бэкэнд, т.е. в базу данных.

Вопрос в том есть ли у вас постоянный доступ к базе данных? А если через месяц вы захотите не 15, а, скажем, 30 записей историзировать? Кто будет менять тригер? У вас есть возможность менять тригер или вам кого-то нужно просить. Тут на первое место выходит еще и вопрос практичности.
...
Рейтинг: 0 / 0
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
    #38421219
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
keinW,
ок, спасибо, буду использовать Ваш пример.
...
Рейтинг: 0 / 0
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
    #38421330
keinW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему вообще появилась необходимость на ограничение количества записей в таблице? Если вам нужны последние 15, то и берите последние 15. Если вас смущает, что таблица становится слишком большой, то режьте ее с помощью хранимой процедуры с определенной периодичностью.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]