2015-10-28 4 views
2

Im пытается избежать нескольких вложений sql в базе данных. Идея состоит в том, чтобы подождать не менее 5 минут, прежде чем вставлять снова.избежать sql-вставки между моментом

Получение времени от последней вставки с помощью

$query ="SELECT fecha 
FROM almacen 
WHERE fecha > NOW() - INTERVAL 5 MINUTE 
ORDER BY id DESC LIMIT 1" 

$espera=mysqli_query($conexion, $query) 

if (empty($espera)) { inserting code } else { close } 

Но запрос ничего не возвращает, когда он должен будет возвращаться значение. Я думал, что это может быть проблемой, поскольку дата была вставлена ​​с использованием php date ("j/n/Y h:i");

Должен ли я изменить формат времени? что я должен использовать?

+0

вы должны использовать синтаксис даты mysql по умолчанию при хранении даты. Поле также должно быть одним из типов даты mysql. Если вы хотите, чтобы он отображал другой способ, используйте ваше приложение, а не mysql. –

+0

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

+0

Укажите точный тип данных столбца и строку кода PHP, с помощью которой вы вставляете значения. – trincot

ответ

0

Если вы хотите, чтобы ограничить строки только 1 запись на 5 минут, я бы:

Создать столбец insert_interval DATE и создать уникальный индекс по этому столбцу. Затем просто попробуйте свою вставку, установив значение insert_interval на независимо от 5-минутного интервала, на которое падает время вставки.

E.G. Нормализовать дату до 5-минутного интервала.

select now() - interval (mod(minute(now()),5)) minute - interval second(now()) second; 

Вставка

insert into table(columns ..., insert_interval) values(
..., now() - interval mod(minute(now()),5) minute - interval second(now()) 
); 

только одна строка допускается за 5-минутный интервал, начиная на час. Итак, 1 ряд с 00:00:00 - 00:04:59 и так далее. Любая попытка вставить другую строку в это временное окно приведет к дублированию ключевой ошибки, которую вы можете поймать и предпринять соответствующие действия.

SQL Fiddle

раскомментировать последний вкладыш, чтобы увидеть ошибку на сборки схемы.

Смежные вопросы