我有一个查询,假设我有一个名为Behavior的表,其中我有两列,第一列是Product_name,第二列是比例。 假设用户输入了 3 条记录 Product1-> A,比例为 50,产品 1-> A,比例为 30,产品 1->A,比例为 20。我希望在表中添加一个检查约束,可以检查用户不应输入同一产品比例>100。
你能帮我一下吗?
触发器可以做到这一点(有一些限制),但其中有一些:
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;