2014-10-09 33 views
0

我想知道如果我可以使用PostgrSQL觸發器更新列的日期類型列,並在這一天我想更新另一個列中的另一列。根據特定日期更新postgresql中的列

爲了更清楚

我有2個表

Works_locations表

walphid   wnumberid locationid 
DRAR   1012   101 
PAPR   1013   105 
PAHF   1014   105 
ETAR   1007   102 
DRWS   1007   102 

的locationsid屬性是指在位置表「LOCID」,這是下跌

locid locname  
101  Storage 
102  Gallary A 
103  Gallary B 
104  Gallary C 
105  Lobby 

展覽桌

exhid  exhname  description  strtdate  endDate 
101   Famous   Blah Blah  2013-07-15  2013-10-13 

,這裏是橋臺展覽臺與地方臺

locationsid  exhibitid 
102    102 
103    101 
104    103 

連接現在,每個展覽都有一些作品,應放置在位置表的一個。

在展覽表(即日期數據類型)的'endDate'列中,我想更新Works locations表中的'locationid'列以將其放置在另一個位置。

換句話說。每個展覽都有一些作品,這些作品都放在其中一個位置。在展覽結束的時候,我想改變位置,具體而言,我希望將作品返回存儲。

任何想法我會如何做這個動作與PostgreSQL?

Regard

+0

當「exhibition」,「endDate」發生變化時,您可以編寫觸發器更新「工作地點」。在[docs](http://www.postgresql.org/docs/9.3/static/sql-createtrigger.html)中有例子。 (向下滾動。)不清楚a)您想要更改「工作地點」中的哪一行,以及b)當前日期(或某個當前日期列)與此有什麼關係。 – 2014-10-09 02:55:14

+0

我只想知道如何做這種基於當前日期的事情。我以前看過那個網頁,但是我沒有找到答案 – Alex 2014-10-09 03:50:28

+0

你的問題在美國英語中沒有意義。基於當前日期*的短語不清楚。您需要更具體地瞭解a)要更新的表和列,b)希望更新哪些值,以及c)何時更新它們。 – 2014-10-09 04:14:41

回答

4

PostgreSQL沒有內置的任務調度程序。即使有調度程序,它運行的命令也不會觸發,它們只是由調度程序運行的過程。

您無法編寫在某個任意時間觸發的觸發器。

您將需要使用cron,任務計劃程序,PgAgent或類似的程序在所需的時間運行語句。或者你可以編寫一個腳本來檢查下一個事件的發生時間,在此之前睡眠,運行所需的命令並將該事件標記爲已完成,然後休眠直到下一個事件。

+0

非常感謝。我現在明白了 – Alex 2014-10-10 03:27:25