首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在postgresql中实现约束

如何在postgresql中实现约束
EN

Stack Overflow用户
提问于 2020-03-11 01:56:20
回答 1查看 35关注 0票数 0

在明细表(产品标识、入库标识)中,只能添加库存大于0的产品。仓库(产品ID,库存)。如何在Postgresql中实现此约束?

EN

回答 1

Stack Overflow用户

发布于 2020-03-11 02:03:27

代码语言:javascript
复制
-- 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关键字是要插入的行)。创建函数后,可以将触发器设置为在插入之前在orders表上运行。

您可以阅读有关创建触发器/函数herehere的更多信息。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60623353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档