I have a query, Suppose I have a Table called Behaviour and in that I have two columns one is Product_name and second is proportion. Suppose, User has entered 3 records Product1-> A with proportion 50, Product 1-> A with Proportion 30, Product 1->A with Proportion 20. I want a check constraint in my table where I can check a user should not enter the proportion >100 for a same product.
Could you please help me in that.
Regards, Himmy Chauhan
CodePudding user response:
A trigger can do that (with some limitations), but something among the lines:
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;