我创建了触发器和功能。
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()
答案 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;