我有两个表(库存和productsLot),我需要一个触发器,它通过对批量(来自productsLot)的总和来计算产品的总数量(在库存表中)。
我不太了解触发器,但我的问题类似于这个Calculate column value from another column in another table。这是我的案子。
CREATE TABLE Stock (productId INTEGER,totalQuantity INTEGER, price NUMERIC(30,2))
PRIMARY KEY (productId);
CREATE TABLE productsLot (productId INTEGER CONSTRAINT fk_stock_productsLot REFERENCES ON Stock(productId) , lotNumber VARCHAR, lotQuantity INTEGER, expirationDate DATE, PRIMARY KEY (productId, lotNumber));
CREATE TRIGGER update_quantity_stock
BEFORE INSERT ON stock SET NEW.totalQuantity =
(
SELECT sum(lotQuantity)
FROM productsLot
WHERE productId = NEW.productId
LIMIT 1
);
我得到了一个错误:
在"SET“或”SET“附近出现语法错误
发布于 2019-06-13 04:28:46
很显然,这是个很愚蠢的问题,但多亏了尼克,我明白了。这是解决办法
CREATE OR REPLACE FUNCTION update_quantity_stock()
RETURNS trigger AS
$$
BEGIN
UPDATE stock SET totalQuantity = (select sum(lotQuantity)
FROM productsLot
WHERE productsLot.productId=stock.productId);
RETURN NEW;
END;
$$
LANGUAGE 'plpgsql';
-触发
CREATE TRIGGER update_quantity_stock_trigger
AFTER INSERT
ON productsLot
FOR EACH ROW
EXECUTE PROCEDURE update_quantity_stock();
https://stackoverflow.com/questions/56578656
复制相似问题