ind*_*ago 6 postgresql trigger database-design postgresql-9.1
我在 PostgreSql 9.1 中有一个触发器,我想在插入多个表时触发它。是否可以让它影响所有这些表而不是为所有这些表创建触发器?我有 58 个表,我想使用调用触发器函数的同一个插入触发器,所以我一直在使用
create trigger tuweke
after insert on product
for each row execute procedure tuwekeAdjustextract();
create trigger tuweke
after insert on caneweightment
for each row execute procedure tuwekeAdjustextract();
...
Run Code Online (Sandbox Code Playgroud)
对所有这些表都这样做,然后我们有多个模式,所以工作量很大,这可以在一个查询中完成吗?然后影响该模式或整个数据库中的所有表?
没有这样的选择。触发器属于一个表,就是这样。但是,如果所有触发器都使用相同的过程,则可以轻松地生成包含所有CREATE TRIGGER语句的漂亮文本输出。唯一要做的就是收集所需的表名,然后在这些表名之前加上必要的部分。
您可以使用如下查询从给定模式中获取所有表名:
SELECT p.tablename
FROM pg_tables p
WHERE p.schemaname = 'public'
;
Run Code Online (Sandbox Code Playgroud)
如果现在你选择
'CREATE TRIGGER tuweke
AFTER INSERT ON ' || p.tablename || '
FOR EACH ROW EXECUTE PROCEDURE tuwekeAdjustextract();
'
Run Code Online (Sandbox Code Playgroud)
而不是p.tablename那么你准备好了。复制输出并运行它。
| 归档时间: |
|
| 查看次数: |
18483 次 |
| 最近记录: |