创建触发器时"Syntax error at or near SET"



我有两个表(库存和产品批次(,我需要一个触发器,通过对批次数量(来自产品批次(求和来计算产品(在库存表中(的总数量。

我对触发器了解不多,但我的问题与此类似 从另一个表中的另一列计算列值。这是我的情况。

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"处或附近出现语法错误

显然这是一个相当愚蠢的问题,但我得到了它,多亏了尼克。这是解决方案

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();

相关内容

最新更新