How do you define postgres functions in Rails and what is their scope and lifetime?
我对Postgres功能一无所知,但最近需要使用它们(这可能表明我正在接近问题,但无论如何......)
我想定义一个像这样的Postgres函数,然后我将通过我的Rails应用程序中的查询访问:
1 2 3 | CREATE FUNCTION date_in_time_zone(time_zone) RETURNS DATE AS 'SELECT DATE(NOW() AT TIME ZONE time_zone);' LANGUAGE SQL; |
(来自这个问题)。
问题第1部分:如何定义此功能?
我认为我会这样做:
1 2 3 4 | SQL ="CREATE FUNCTION date_in_time_zone(time_zone) RETURNS date AS 'SELECT DATE(NOW() AT TIME ZONE time_zone);' LANGUAGE SQL;" ActiveRecord::Base.connection.execute SQL |
它是否正确?
问题第2部分:这个功能的范围和寿命是多少?
一旦定义,此函数持续多长时间以及管理该函数版本控制的最佳方式是什么。如果它是在数据库而不是Rails中定义的那么我将不得不小心销毁它或更新它,如果我想改变它的工作方式。每次加载Rails环境时,我还需要一些初始化函数的方法。
我应该在初始化应用程序时创建一次该函数,还是需要为每个Web请求创建它?我认为前者是在数据库中定义的,但我不
问题第3部分:我是否应该使用这种方法?
这只是一个坏主意吗?我应该尝试以不同的方式解决问题吗?我真的不知道这些功能的范围或寿命是多少。
一旦创建,PostgreSQL中的函数将永久保留。 与其他对象一样,它位于模式中,只有在此模式位于当前会话的
在通用数据库中,您将在默认架构
使用
请注意时区名称和缩写或数字偏移的略有不同的影响。 相关问题/答案:
应用于时间戳时,具有相同属性的时区名称会产生不同的结果
PostgreSQL - 如何在不同的时区渲染日期?