Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
|
|||
|---|---|---|---|
|
#18+
Есть таблица t1 как сделать так чтобы новые добавления перезаписывали более старые. И как сделать чтобы записей было только 15? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2013, 11:44 |
|
||
|
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
|
|||
|---|---|---|---|
|
#18+
Странный вопрос. Не вижу сложности update вместо insert'a делать. Или insert on duplicate key update ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2013, 12:44 |
|
||
|
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
|
|||
|---|---|---|---|
|
#18+
seejilСтранный вопрос. Не вижу сложности update вместо insert'a делать. Или insert on duplicate key update О, апдейтить более старую запись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2013, 12:46 |
|
||
|
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
|
|||
|---|---|---|---|
|
#18+
Если "раскидать" проблему на составные части, то решение очевидно (не претендую на оптимальность и оригинальность): 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; Как-то так. Осталось обернуть это в похапэ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2013, 12:59 |
|
||
|
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
|
|||
|---|---|---|---|
|
#18+
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 которая решает эту задачу. Типа, указываю количество строк в таблице и она сама перезаписывает более старые, может знает об этом кто? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2013, 13:35 |
|
||
|
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
|
|||
|---|---|---|---|
|
#18+
Если вы хотите/имеете возможность, то возможно это реализовать триггером на апдейт/инсерт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2013, 13:51 |
|
||
|
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
|
|||
|---|---|---|---|
|
#18+
keinWЕсли вы хотите/имеете возможность, то возможно это реализовать триггером на апдейт/инсерт Вот как Вы думаете, что лучше использовать, то что вы написали или триггер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2013, 15:49 |
|
||
|
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
|
|||
|---|---|---|---|
|
#18+
Я бы все такие вещи "пихал" в бэкэнд, т.е. в базу данных. Вопрос в том есть ли у вас постоянный доступ к базе данных? А если через месяц вы захотите не 15, а, скажем, 30 записей историзировать? Кто будет менять тригер? У вас есть возможность менять тригер или вам кого-то нужно просить. Тут на первое место выходит еще и вопрос практичности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 10:52 |
|
||
|
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
|
|||
|---|---|---|---|
|
#18+
keinW, ок, спасибо, буду использовать Ваш пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 11:02 |
|
||
|
[PHP+MySQL] Как сделать само-перезаписывающую таблицу MySQL?
|
|||
|---|---|---|---|
|
#18+
А почему вообще появилась необходимость на ограничение количества записей в таблице? Если вам нужны последние 15, то и берите последние 15. Если вас смущает, что таблица становится слишком большой, то режьте ее с помощью хранимой процедуры с определенной периодичностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 12:09 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=101&tid=1463378]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 342ms |

| 0 / 0 |
