基于特定日期更新postgresql中的列
我想知道我是否可以使用触发器和PostgrSQL来更新一个列,其中我确实有一个日期类型的列,并且在这个日期我想更新另一个表中的另一个列 更清楚地说 我有两张桌子 工程地点表基于特定日期更新postgresql中的列,sql,postgresql,Sql,Postgresql,我想知道我是否可以使用触发器和PostgrSQL来更新一个列,其中我确实有一个日期类型的列,并且在这个日期我想更新另一个表中的另一个列 更清楚地说 我有两张桌子 工程地点表 walphid wnumberid locationid DRAR 1012 101 PAPR 1013 105 PAHF 1014 105 ETAR 1007
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执行此操作吗
PostgreSQL没有内置的任务调度程序。即使有调度程序,它运行的命令也不会是触发器,它们只是由调度程序运行的过程 您不能编写在任意时间触发的触发器
您需要使用
cron
、任务调度程序、PgAgent或类似工具在所需时间运行语句。或者您可以编写一个脚本,检查下一个事件何时发生,在此之前休眠,运行所需命令并将该事件标记为已完成,然后休眠到下一个事件。PostgreSQL没有内置的任务调度程序。即使有一个调度程序,它运行的命令也不会是触发器,而是由调度程序运行的过程
您不能编写在任意时间触发的触发器
您需要使用
cron
、任务调度器、PgAgent或类似工具在所需时间运行语句。或者您可以编写一个脚本,检查下一个事件何时发生,在此之前休眠,运行所需命令并将该事件标记为已完成,然后休眠到下一个事件。您可以编写一个触发器来更新“工作位置”“当”展览“结束日期”更改时。下面是一些例子。(向下滚动。)不清楚a)您要更改“工作地点”中的哪一行,b)当前日期(或某个当前日期列)与此有何关系。我只想知道如何基于当前日期执行此操作。我以前确实看过那一页,但没有找到答案。你的问题在美国英语中没有意义。基于当前日期的短语不清楚。您需要更具体地说明a)要更新哪些表和列,b)要更新哪些值,以及c)何时更新。好的,我将进行一些更改以澄清如果您希望在“endDate”中存储的值上或之后发生某些事情,您不需要触发器。触发器仅在数据发生更改时运行。相反,您需要手动运行UPDATE语句,或由cron运行,或由pg_代理运行。您可以编写触发器,在“展览”“结束日期”更改时更新“工作地点”。下面是一些例子。(向下滚动。)不清楚a)您要更改“工作地点”中的哪一行,b)当前日期(或某个当前日期列)与此有何关系。我只想知道如何基于当前日期执行此操作。我以前确实看过那一页,但没有找到答案。你的问题在美国英语中没有意义。基于当前日期的短语不清楚。您需要更具体地说明a)要更新哪些表和列,b)要更新哪些值,以及c)何时更新。好的,我将进行一些更改以澄清如果您希望在“endDate”中存储的值上或之后发生某些事情,您不需要触发器。触发器仅在数据发生更改时运行。相反,您需要手动运行UPDATE语句,或者由cron运行,或者由pg_代理运行。非常感谢。我现在明白了,非常感谢。我现在明白了