2016-11-10 13 views
-4

私は、コマンドのテーブルを持っていると私は、この状態が30分作成時にテーブル内の列を更新するにはどうすればよいですか?

更新に何か他のものに変更しなかった場合は、「期限切れ」にコマンドのステータスを変更したい: 私は、これはすべての30を起こるしたいです分、私は何もしてはいけません。このコマンドが30分以内に処理されなかった場合、データベースは自動的に更新され、コマンドのステータスが「期限切れ」に変更されます。

+3

UPDATEキーSET値= "期限切れ" WHERE条件 "は、私があなたに与えた分だけあなたに与えることができます。あまりにも幅広く、完全な文脈の欠如として閉じる投票。 –

+0

互換性のないデータベースタグを削除しました。実際に使用しているデータベースを指定するタグを追加してください。 –

+0

どのDBMSを使用していますか?構文は同じではありません。テーブルの定義と明快さがなければ、これは現在のところ解決できません。 –

答えて

1

Do not do!代わりに、ビューまたは計算列を使用します。

最新の更新日を保持してください。とにかくテーブルを変更しているので、これは簡単なはずです。もちろん

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

@ブレヒム。 。 。あなたのコメントは意味をなさない。 –

+0

ok!私は状態で自分のデータベースを更新するSQLで何かが必要です。 – brahimm

関連する問題