首页 > 解决方案 > 我需要在我的程序中添加约束“不超过两个制造商具有相同的产品”

问题描述

我需要在我的程序中添加约束“不超过两个制造商具有相同的产品”

CREATE OR REPLACE PROCEDURE Product_Manufacture( name IN VARCHAR2,product_name IN VARCHAR2)
BEGIN
  INSERT INTO manufacture_by VALUES(name,product_name)
  COMMIT;
END Product_Manufacture;
/

标签: oracleplsql

解决方案


一个选项是添加一个语句级别触发器,该触发器在插入发生期间检查条件,并在超过阈值时阻止相关的 DML 语句执行,例如

CREATE OR REPLACE TRIGGER chk_multiplicity
  AFTER INSERT OR UPDATE ON manufacture_by
DECLARE
  cnt    INT;
BEGIN
  SELECT MAX(COUNT(DISTINCT name))
    INTO cnt
    FROM manufacture_by
   GROUP BY product_name;

  IF cnt > 2 THEN
    RAISE_APPLICATION_ERROR(-20123,'At most two manufacture might have the same prod!');
  END IF;
END;
/

推荐阅读