Royal Flash
-=MaestrO=-
LOG-файл - очистка по кол-ву в зависимости от даты?
Есть таблица с полями:
dataerr (datetime) - время записи
error (char) - наименование ошибки
info (text) - информация о пользователе
Нужно, чтобы в таблице было не более 100, самых последних по времени, записей. Если записей более 100, все самые старые записи удаляются, чтобы оcталось 100 самых новых.
Вот такой вариант у меня:
$sql = 'SELECT * FROM table ORDER BY dataerr DESC LIMIT 100, 1';
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$sql = 'DELETE FROM table WHERE dataerr <= "'.$row['dataerr'].'"';
$result = mysql_query($sql);
Очевидный минус - может оставить менее 100 записей, если есть несколько записей в БД с одним и тем же временем: $row['dataerr'].
Кcожалению, оператор DELETE поддерживает Limit, тлько с одним параметром, иначе можно былобы вместо первого SELECT использовать DELETE (DELETE FROM table ORDER BY dataerr DESC LIMIT 100, 10000).
Возможно ли, может быть, как-либо объеденить данные запросы (SELECT и DELETE) в один?
Есть таблица с полями:
dataerr (datetime) - время записи
error (char) - наименование ошибки
info (text) - информация о пользователе
Нужно, чтобы в таблице было не более 100, самых последних по времени, записей. Если записей более 100, все самые старые записи удаляются, чтобы оcталось 100 самых новых.
Вот такой вариант у меня:
$sql = 'SELECT * FROM table ORDER BY dataerr DESC LIMIT 100, 1';
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$sql = 'DELETE FROM table WHERE dataerr <= "'.$row['dataerr'].'"';
$result = mysql_query($sql);
Очевидный минус - может оставить менее 100 записей, если есть несколько записей в БД с одним и тем же временем: $row['dataerr'].
Кcожалению, оператор DELETE поддерживает Limit, тлько с одним параметром, иначе можно былобы вместо первого SELECT использовать DELETE (DELETE FROM table ORDER BY dataerr DESC LIMIT 100, 10000).
Возможно ли, может быть, как-либо объеденить данные запросы (SELECT и DELETE) в один?