2013-02-14 2 views
-1

Я изучаю Mysql, и у меня есть этот вопрос: В моем db, когда кто-то кладет предмет в корзину, он получает «зарезервированное» состояние. Но если человек не проверяет в течение следующих 30 минут, элемент должен быть снова установлен на «свободный». Можно ли сделать без использования CRON? Или несколько легких решений ....Mysql Schedule Events

Спасибо! :)

+1

хммм отрицательный голос без ответа? это новый –

ответ

0

Одним из способов были бы установить зарезервированным на определенное время, скажу:

update `item` set `reserved` = 1, `reservedto` = ADDTIME(NOW(),'00:30') where `id` = ?; 

Затем перед проверкой имеющихся элементов (или где-нибудь еще, если это случается часто) просто добавить realese заявления следующим образом:

update `item` set `reserved` = 0 where `reservedto` < NOW() and `reserved` = 1; 

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

+0

таблица, как ожидается, будет довольно большой ... этот запрос будет довольно тяжелым, не так ли? –

+0

Да, вторая команда будет тяжелой и не должна выполняться часто. Ваша альтернатива будет заключаться в создании второй таблицы с просто резервированием, которую вы «проверяете», когда они должны быть выпущены. Однако, если у вас есть указатель на «зарезервировано» и «зарезервировано», указанная выше вторая команда будет не так уж плоха. –