如何在Oracle sql中添加Check约束来检查百分比不大于100

问题描述 投票:0回答:1

我有一个查询,假设我有一个名为Behavior的表,其中我有两列,第一列是Product_name,第二列是比例。 假设用户输入了 3 条记录 Product1-> A,比例为 50,产品 1-> A,比例为 30,产品 1->A,比例为 20。我希望在表中添加一个检查约束,可以检查用户不应输入同一产品比例>100。

你能帮我一下吗?

sql oracle plsql
1个回答
1
投票

触发器可以做到这一点(有一些限制),但其中有一些:

CREATE OR REPLACE TRIGGER some_table_portion_trig
  BEFORE INSERT OR UPDATE OF proportion ON some_table
  FOR EACH ROW
DECLARE 
  l_sum_portion NUMBER;
BEGIN
  SELECT SUM(portion) + :new.proportion
    INTO l_sum_portion
    FROM some_table
   WHERE product_name = :new.product_name;

   IF l_sum_portion > 100 THEN
     RAISE_APPLICATION_ERROR(-20001, 'Sum of portions exceedds 100 for product_name '|| :new.product_name);
   END IF;
EXCEPTION WHEN OTHERS THEN
  NULL;
END;
© www.soinside.com 2019 - 2024. All rights reserved.