错误触发器。触发不返回。 PostgreSQL的

时间:2017-07-27 11:47:25

标签: postgresql triggers

我创建了触发器和功能。

CREATE TRIGGER trigger_update_quantity AFTER INSERT ON orderitem
    FOR EACH ROW EXECUTE PROCEDURE update_quantity();

        CREATE OR REPLACE FUNCTION update_quantity() RETURNS TRIGGER AS $quantity_update$
          DECLARE
            flower INT;
          BEGIN
            flower = New.flower_num;
            UPDATE product SET quantity = quantity - New.quantity
            WHERE flower_num = flower;
          END;
          $quantity_update$
        LANGUAGE plpgsql;

当我尝试在表格中插入一行时。我发现以下错误。

INSERT INTO "public"."orderitem" ("order_num", "flower_num", "quantity", "total_price") VALUES (?, ?, ?, ?);

            [2F005] ERROR: control reached end of trigger procedure without RETURN
            Where: PL/pgSQL function update_quantity()

2 个答案:

答案 0 :(得分:2)

这是我要写的(未经测试):

    CREATE OR REPLACE FUNCTION update_quantity() RETURNS TRIGGER AS $quantity_update$
      DECLARE
        flower INT;
      BEGIN
        flower = New.flower_num;
        UPDATE product SET quantity = quantity - New.quantity
        WHERE flower_num = flower;
        RETURN NEW;
      END;
      $quantity_update$
    LANGUAGE plpgsql;

CREATE TRIGGER trigger_update_quantity AFTER INSERT ON orderitem
    FOR EACH ROW EXECUTE PROCEDURE update_quantity();

答案 1 :(得分:0)

AFTER TRIGGER如何,你可以返回RETURN OLD;或RETURN NULL;