小编Ste*_*ngo的帖子

模式中所有表的 PL/PGSQL 动态触发器

我希望通过对 updated_at 列的自动更新来自动化每个表更新。我能够使用触发器对特定表进行这项工作。但是我在任何地方都找不到的主要目标是创建一个函数,该函数动态获取模式中的所有表,并创建相同的触发器,并且只更改触发器引用的表名。对于我的生活,我无法弄清楚。

我相信这不应该像我所做的那样棘手,因为我们架构中的表将具有完全相同的列名“updated_at”。

我尝试过并认为可行的一种解决方案是将表模式转换为数组,并在每次迭代中迭代以调用/创建触发器。但是我没有大量的 psql 经验,所以我发现自己在谷歌上搜索了几个小时来解决这个小问题。

SELECT ARRAY (
            SELECT
                table_name::text
            FROM 
                information_schema.tables

            WHERE table_schema = 'public') as tables;
Run Code Online (Sandbox Code Playgroud)

我也试过:

DO $$
DECLARE
    t text;
BEGIN
    FOR t IN 
        SELECT table_name FROM information_schema.columns
        WHERE column_name = 'updated_at'    
    LOOP 
        EXECUTE format('CREATE TRIGGER update_updatedAt
                        BEFORE UPDATE ON %I
                        FOR EACH ROW EXECUTE PROCEDURE updated_at()',
                        t);
    END loop;
    END;
    $$ language 'plpgsql';
Run Code Online (Sandbox Code Playgroud)

程序:

CREATE OR REPLACE FUNCTION updated_at()
RETURNS TRIGGER AS $$
BEGIN
    NEW.updated_at = now();
    RETURN NEW;
END;
$$ language 'plpgsql';
Run Code Online (Sandbox Code Playgroud)

sql arrays postgresql triggers psql

3
推荐指数
1
解决办法
599
查看次数

通过React-Redux进行地理位置定位

我试图更好地了解redux并做出响应的生命周期方法。

我在组件上安装了prop函数,并在redux中调用了函数。在redux上,我正在调用位置以获取位置并设置初始状态,并在进行调用时对其进行更新。我能够得到该职位,但是无论我通过redux进行了什么尝试,我的坐标(初始状态)仍然是未定义的。我在componentDidMount函数上尝试了.then(),并在本地设置状态,这可行。但是我想将此功能与redux一起使用,以尝试更好地理解它。我的理解是,只要存在初始状态,更新它就不会有问题。但是我觉得我的问题可能出在我的action.payload上。因为在我的切换案例中没有为GET_LOCATION记录任何内容。值得注意的是,我在控制台上收到黄色警告,[违规]仅根据用户手势请求地理位置信息。我不确定这是否会影响任何事情。无论如何,任何建议将不胜感激。我一直在寻找高点和低点,以找到通过redux进行地理位置定位的好方法。这是代码:

const initialState = {
    coords: { }
};


export function getLocation() {
    const geolocation = navigator.geolocation;
          return {
             type: GET_LOCATION,
             payload: geolocation.getCurrentPosition((position) => {
                 console.log(position.coords)
                 return position
             })
         }

};
Run Code Online (Sandbox Code Playgroud)

切换语句:

case GET_LOCATION:
    console.log(GET_LOCATION)
        return Object.assign({},
            state,
            {
                coords: action.payload
            }
        )
Run Code Online (Sandbox Code Playgroud)

javascript geolocation reactjs redux react-redux

2
推荐指数
1
解决办法
1991
查看次数