2015-05-21 29 views
0

我在mysql中有一個數據庫。我想按特定數量增加特定列的價值。我已經用java應用程序(通過netbeans)連接了這個數據庫。我相信這隻能通過存儲過程或函數在數據庫級別發生。 如果sysdate和日期(另一列)之間的差異大於15天,那麼列'x'需要增加1000。mysql後臺定期增加一列值

我不能通過應用程序端的觸發器來做到這一點,因爲這將需要登錄到應用程序,並且如果觸發器沒有觸發,調度增加不會發生。

幫幫我!

+0

Sunny,有一種方法可以從Java和數據庫級別執行此操作。您能否詳細解釋一下您的情況:您是否正在尋找一個腳本,用於更新您最近添加'X'列的表中已有的值?或者你想在從Java端插入新記錄時定期填充'X'? –

+0

我想定期更新該列。我不想腳本每天運行。我希望它被自動處理。這就是爲什麼我更喜歡數據庫端 – Sunny

+0

那麼我建議你從Java端做。 主要原因: •\t Java vs DB:數據庫要快得多,但除非要更新大量的行,否則這並不重要。 •\t由於您可能已經有一個持久存在此對象的Java方法,因此將「if」語句集成在其中並且只需將字段「X」增加爲1000或當「if」語句通過或不通過時就很容易。 如果您共享您正在填充和保留該對象的部分代碼,我可以爲其準備更改。 –

回答

0

您必須爲插入語句創建觸發器。例如;

CREATE TRIGGER insert_check BEFORE INSERT ON yourTable 
FOR EACH ROW 
    BEGIN 
     IF NEW.amount < 0 THEN 
      SET NEW.amount = 0; 
     ELSEIF NEW.amount > 100 THEN 
      SET NEW.amount = 100; 
     END IF; 
    END; 
0

您可以在MYSQL中定義EVENT。例如。

CREATE EVENT event_update_something 
    ON SCHEDULE 
     EVERY 10 SECOND 
    DO 
     ALL YOUR LOGIC HERE 

查看更多here

或者你可以在Java端定義Sheduler例如石英工作。如果你使用彈簧。看一個例子here

無論如何,你應該定義一個定期調用的動作(例如10秒間隔)。該操作檢查某些狀態並更新必要的數據。