我在mysql中有一個數據庫。我想按特定數量增加特定列的價值。我已經用java應用程序(通過netbeans)連接了這個數據庫。我相信這隻能通過存儲過程或函數在數據庫級別發生。 如果sysdate和日期(另一列)之間的差異大於15天,那麼列'x'需要增加1000。mysql後臺定期增加一列值
我不能通過應用程序端的觸發器來做到這一點,因爲這將需要登錄到應用程序,並且如果觸發器沒有觸發,調度增加不會發生。
幫幫我!
我在mysql中有一個數據庫。我想按特定數量增加特定列的價值。我已經用java應用程序(通過netbeans)連接了這個數據庫。我相信這隻能通過存儲過程或函數在數據庫級別發生。 如果sysdate和日期(另一列)之間的差異大於15天,那麼列'x'需要增加1000。mysql後臺定期增加一列值
我不能通過應用程序端的觸發器來做到這一點,因爲這將需要登錄到應用程序,並且如果觸發器沒有觸發,調度增加不會發生。
幫幫我!
您必須爲插入語句創建觸發器。例如;
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;
Sunny,有一種方法可以從Java和數據庫級別執行此操作。您能否詳細解釋一下您的情況:您是否正在尋找一個腳本,用於更新您最近添加'X'列的表中已有的值?或者你想在從Java端插入新記錄時定期填充'X'? –
我想定期更新該列。我不想腳本每天運行。我希望它被自動處理。這就是爲什麼我更喜歡數據庫端 – Sunny
那麼我建議你從Java端做。 主要原因: •\t Java vs DB:數據庫要快得多,但除非要更新大量的行,否則這並不重要。 •\t由於您可能已經有一個持久存在此對象的Java方法,因此將「if」語句集成在其中並且只需將字段「X」增加爲1000或當「if」語句通過或不通過時就很容易。 如果您共享您正在填充和保留該對象的部分代碼,我可以爲其準備更改。 –