在详细信息表(产品ID,收货ID)中,只能添加库存大于0的产品。仓库(产品编号,库存)。如何在Postgresql中实现此约束?
-- CREATE THE FUNCTION
CREATE FUNCTION trg_product_stock_check()
RETURNS trigger AS
$func$
BEGIN
if exists (select * from warehouse w where w.product_id = new.product_id and stock <= 0) then
raise NOTICE 'Product must have a stock of greater than 0';
return null;
end if;
return new;
END
$func$ LANGUAGE plpgsql;
-- CREATE THE TRIGGER
CREATE TRIGGER product_stock_check
BEFORE INSERT ON "orders"
FOR EACH ROW EXECUTE PROCEDURE trg_product_stock_check();
解决方案是创建一个在插入订单表时设置的触发函数。首先创建您的函数。您要在功能中检查仓库表中产品的库存数量。如果产品的库存数量小于或等于0,则返回null并显示一条日志消息。否则,返回新创建的行(例如:函数中的new
关键字是要插入的行)。创建函数后,可以将触发器设置为在插入之前在订单表上运行。