2016-11-10 2 views
-4

У меня есть таблица команд, и я хочу, чтобы изменить статус команды на «истекло», если этот статус не изменится на что-то еще в течение 30 минКак обновить столбец таблицы после момента его создания?

Update: Я хочу, чтобы это произошло через каждые 30 мин, я ничего не должен делать. само обновление базы данных и изменить статус любой команды на «истек», если эта команда не была обработана за 30 минут

+3

'UPDATE key SET value =" expired "WHERE condition', thats столько, сколько я могу дать вам столько, сколько вы нам дали. Голосование закрывается как слишком широкое и полное отсутствие контекста. –

+0

Я удалил несовместимые теги базы данных. Добавьте тег, который указывает базу данных, которую вы действительно используете. –

+0

Какая СУБД вы используете? Синтаксис не будет таким же. И без определения и четкости таблицы это не отвечает в настоящее время. –

ответ

1

Не делайте этого! Вместо этого используйте представление или вычисленный столбец.

Итак, держите самую последнюю дату обновления. Это должно быть легко, потому что вы все равно изменяете таблицу.

Затем вы можете рассчитать просроченного как:

create view v_t as 
    select t.*, 
      (case when status_update_dt < CURRENT_DATETIME - interval '30 minute' 
       then 'expired' 
       else status 
      end) as new_status 
    from t; 

Конечно, дата/время функции зависят от базы данных (выше является синтаксис ANSI). И некоторые базы данных поддерживают вычисленные столбцы, которые помещают определение непосредственно в таблицу. Это действительно удобно, потому что вам не нужно менять данные; он просто работает, когда вы запрашиваете данные.

+0

Мне действительно нужно изменить базу данных; потому что он будет удаляться через какое-то время, Это похоже на временную таблицу, в которой команды hundl restaus – brahimm

+0

@brahimm. , , Ваш комментарий не имеет смысла. –

+0

ОК! Мне нужно что-то в sql, которое обновляет мою базу данных в состоянии. – brahimm

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