R0c*_*k99 3 postgresql triggers function
我有一个问题:如何为一个触发器添加多个表?这是可能的,还是我应该为 2 个不同的表再创建 2 个触发器?
创建一个新函数
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)