【发布时间】:2014-05-04 08:54:48
【问题描述】:
在postgres 数据库中,有表base1,它是视图view1 的基表。
如果 base1 中的列被创建、删除或重命名,我想使用 ddl 触发器重新创建视图 view1。
create event trigger base1_views
on ddl_command_end
when tag in( 'ALTER TABLE' )
execute procedure base1_views_fn();
create function base1_views_fn() returns void as $$
declare
buf varchar;
begin
-- is table being altered = 'base'?
-- add, drop or renaming a column?
buf = 'drop view view1';
execute buf;
buf = 'create view view1 as select * from base1 where ...';
execute buf;
end;
$$ language 'plpgsql';
在函数base1_views_fn()中,我们如何获取表名以及是否正在更改列?
【问题讨论】:
标签: postgresql ddl triggers