美好的一天,
我在查询时遇到了麻烦,因为我似乎无法理解为什么我不断收到错误“ AS或附近的语法错误”,这是我的查询:
CREATE TRIGGER updateAvailableQuantity
AFTER INSERT ON sale_item FOR EACH ROW
AS $$
BEGIN
IF NEW.quantity > 0 THEN
UPDATE products
SET products.quantity_instock = products.quantity_instock - NEW.quantity WHERE barcode = NEW.barcode;
END IF;
END;
$$ LANGUAGE plpgsql;
我一直遇到的错误是
ERROR: syntax error at or near "AS"
LINE 4: AS $$
^
SQL state: 42601
Character: 100
答案 0 :(得分:1)
您不能以这种方式在PostgreSQL中编写触发器。这是一个两步过程。
CREATE OR REPLACE FUNCTION updateAvailableQuantity()
RETURNS TRIGGER
AS
$$
BEGIN
IF NEW.quantity > 0 THEN
UPDATE products
SET quantity_instock = quantity_instock - NEW.quantity WHERE products.barcode = NEW.barcode;
END IF;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trg_updateAvailableQuantity
AFTER INSERT ON sale_item
FOR EACH ROW
EXECUTE PROCEDURE updateAvailableQuantity();
答案 1 :(得分:0)