Postgresql,如何为一个触发器添加多个表

R0c*_*k99 3 postgresql triggers function

我有一个问题:如何为一个触发器添加多个表?这是可能的,还是我应该为 2 个不同的表再创建 2 个触发器?

abb*_*bas 6

创建一个新函数

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

然后为每个包含updated_at列的表创建一个触发器

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 trigger_update_timestamp
                    BEFORE UPDATE ON %I
                    FOR EACH ROW EXECUTE PROCEDURE updated_timestamp_func()', t,t);
    END loop;
END;
$$ language 'plpgsql';
Run Code Online (Sandbox Code Playgroud)


Nei*_*gan 2

您需要为每个表定义一个触发器,因此如果您有两个表,则需要两个触发器。

然而,多个触发器可以使用相同的触发器函数。