小编kir*_*tee的帖子

PostgreSQL:更新视图的触发器不起作用

我正在尝试使更新视图的触发器起作用。如果我正在做并插入它就可以了!但是当我尝试进行 UPDATE 时,它只是不运行。

CREATE OR REPLACE FUNCTION test_trigger_function()
RETURNS trigger AS
$$
    BEGIN
        RAISE NOTICE 'hi';
        RETURN NEW;
    END;
$$ LANGUAGE PLPGSQL;

CREATE TRIGGER test_trigger
INSTEAD OF INSERT OR UPDATE
    ON specific_view
        FOR EACH ROW
            EXECUTE PROCEDURE test_trigger_function();
Run Code Online (Sandbox Code Playgroud)

然后在另一个地方我执行它:

RAISE NOTICE 'before';
UPDATE specific_view SET gender='randomstuff';
RAISE NOTICE 'after';
Run Code Online (Sandbox Code Playgroud)

结果:

psql:test_function.pgsql:134: NOTICE:  before
psql:test_function.pgsql:134: NOTICE:  after
Run Code Online (Sandbox Code Playgroud)

插入时:

RAISE NOTICE 'before';
INSERT INTO specific_view (gender)
    VALUES ('randomstuff');
RAISE NOTICE 'after';
Run Code Online (Sandbox Code Playgroud)

返回:

psql:test_function.pgsql:134: NOTICE:  before
psql:test_function.pgsql:134: NOTICE:  hi
CONTEXT:  SQL statement "INSERT …
Run Code Online (Sandbox Code Playgroud)

postgresql trigger postgresql-9.3

4
推荐指数
1
解决办法
4704
查看次数

标签 统计

postgresql ×1

postgresql-9.3 ×1

trigger ×1