【问题标题】:PostgreSQL: create view everytime a table is updatedPostgreSQL:每次更新表时创建视图
【发布时间】:2022-12-13 23:18:31
【问题描述】:

我是 Postgresql 14 的新手;我正在尝试在表上创建一个触发器,每次通过 INSERT / UPDATE / DELETE 修改表时都会创建一个视图。应用触发器后,我在尝试更新/插入/删除表中的任何内容时收到此错误:

错误:控制已到达触发过程的末尾,没有返回; 上下文:PL/pgSQL 函数 createmyview(); SQL 状态:2F005

我假设我的触发功能丢失了一些东西......

这是我的触发功能:

CREATE FUNCTION createmyVIEW() RETURNS trigger AS $$
BEGIN
    DROP VIEW IF EXISTS public.myVIEW; 

    CREATE VIEW public.myVIEW AS

    SELECT * FROM data.mytable;
END
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

应用触发器:

CREATE TRIGGER syncView AFTER INSERT OR UPDATE OR DELETE ON data.mytable
FOR EACH STATEMENT EXECUTE PROCEDURE createmyView();

【问题讨论】:

  • 为什么要在每次数据更改时重新创建视图?修改时,视图将自动反映基础表中的更改。
  • 你是对的!我不知道那...谢谢

标签: sql postgresql postgresql-14


【解决方案1】:

尝试在函数中使用“RETURN”,例如:

CREATE FUNCTION createmyVIEW() RETURNS trigger AS $$
BEGIN
  DROP VIEW IF EXISTS public.myVIEW; 
  CREATE VIEW public.myVIEW AS
  SELECT * FROM data.mytable;
RETURN NULL;
END
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2021-03-09
    • 2012-02-24
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多