Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таблица-очередь 
:(
    Опции темы
Therion
Дата 16.2.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 21.12.2003

Репутация: нет
Всего: нет



Есть ли возможность стандартными возможностями сервера создать таблицу на 100 записей, и после добавления 101 - первый автоматически удалялся. Нужно иметь только 100 записей - при вставке новой самая старая удаляется.
Заранее благодарен. 
PM MAIL   Вверх
skyboy
Дата 17.2.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



триггер. 
PM MAIL   Вверх
Therion
Дата 20.2.2007, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 21.12.2003

Репутация: нет
Всего: нет



Спасибо
PM MAIL   Вверх
Therion
Дата 21.2.2007, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 21.12.2003

Репутация: нет
Всего: нет



Я конечно понял что такое триггер, но никак не пойму как создать такой триггер, который удалял перый ряд, когда число записей доходит до 100  smile 
Заранее благодарен
PM MAIL   Вверх
SamDark
Дата 21.2.2007, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 1
Всего: 38



if ((select count(*) from my_table)>100) delete ...


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Ignat
Дата 21.2.2007, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Цитата(SamDark @  21.2.2007,  13:06 Найти цитируемый пост)
delete ... 

А дальше?  smile 


--------------------
Теперь при чем :P
PM   Вверх
muzer
Дата 22.2.2007, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 387
Регистрация: 31.8.2006

Репутация: 30
Всего: 31



Цитата(Ignat @  21.2.2007,  17:18 Найти цитируемый пост)
А дальше?
Код

delete from table_name order by id limit 1

соответсвенно id - это автоинкрементное поле.

Но я бы это делал так ($id - переменная любого языка в которую сохраняем результат селекта):
LOCK TABLE table_name WRITE;
$id = SELECT id FROM table_name ORDER BY показатель_старости DESC limit 99,1;
if($id) {
REPLACE table_name VALUES ($id,...,...,...)
} else {
INSERT table_name VALUES (...,...,...)
}
UNLOCK TABLES;
PM WWW   Вверх
Ignat
Дата 22.2.2007, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Цитата(muzer @  22.2.2007,  01:00 Найти цитируемый пост)
delete from table_name order by id limit 1

не-а, не канает. Предположим, что на этапе удаления строки в одном из предыдущих выполнений была ошибка (да хоть банальный конфликт ).
Имеем уже не 100, а 101 строку и уменьшаться это число не будет ;)


аналогично 
Цитата(muzer @  22.2.2007,  01:00 Найти цитируемый пост)
Но я бы это делал так ($id - переменная любого языка в которую сохраняем результат селекта):
LOCK TABLE table_name WRITE;
$id = SELECT id FROM table_name ORDER BY показатель_старости DESC limit 99,1;
if($id) {
REPLACE table_name VALUES ($id,...,...,...)
} else {
INSERT table_name VALUES (...,...,...)
}
UNLOCK TABLES; 

здесь также нет проверки на ограничение 100 записей ;)


--------------------
Теперь при чем :P
PM   Вверх
Therion
Дата 22.2.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 21.12.2003

Репутация: нет
Всего: нет



Может у кого имеется готовая реализация? Не верю что такое никому ниикогда не нужно было делать!
PM MAIL   Вверх
Bikutoru
Дата 22.2.2007, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


Профиль
Группа: Участник
Сообщений: 522
Регистрация: 24.5.2005
Где: Москва

Репутация: 1
Всего: 22



Что-то вроде
Код

CREATE TRIGGER AFTER INSERT ON a_table FOR EACH ROW
    DELETE FROM a_table WHERE id IN (SELECT id FROM a_table ORDER BY id DESC LIMIT 100);

?


--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
Ignat
Дата 22.2.2007, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Цитата(Bikutoru @  22.2.2007,  13:22 Найти цитируемый пост)
Что-то вроде

Вроде, но не IN, а NOT IN ;)


--------------------
Теперь при чем :P
PM   Вверх
igorold
Дата 22.2.2007, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



Цитата(Ignat @  22.2.2007,  14:58 Найти цитируемый пост)
Вроде, но не IN, а NOT IN ;) 


... не дал человеку удалить последние 100 записей ...  smile 


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
muzer
Дата 22.2.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 387
Регистрация: 31.8.2006

Репутация: 30
Всего: 31



Цитата(Ignat @  22.2.2007,  10:59 Найти цитируемый пост)
здесь также нет проверки на ограничение 100 записей ;)

А зачем эта проверка?
Приведи ситуацию, при которой в таблице окажется больше 100 записей, если вставлять их всегда подобным образом smile
PM WWW   Вверх
Ignat
Дата 5.3.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Цитата(muzer @  22.2.2007,  17:43 Найти цитируемый пост)
Приведи ситуацию, при которой в таблице окажется больше 100 записей, если вставлять их всегда подобным образом


Цитата(Ignat @  22.2.2007,  09:59 Найти цитируемый пост)
редположим, что на этапе удаления строки в одном из предыдущих выполнений была ошибка (да хоть банальный конфликт ).
Имеем уже не 100, а 101 строку и уменьшаться это число не будет ;)



--------------------
Теперь при чем :P
PM   Вверх
muzer
Дата 6.3.2007, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 387
Регистрация: 31.8.2006

Репутация: 30
Всего: 31



Ignat, да там-то понятно, а я про свой вариант спрашиваю, в котором только REPLACE или INSERT, ты написал "аналогично", я вот не придумаю как там можно получить больше 100 записей.
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0585 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.