oracle - 我需要在我的程序中添加约束“不超过两个制造商具有相同的产品”
问题描述
我需要在我的程序中添加约束“不超过两个制造商具有相同的产品”
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;
/
解决方案
一个选项是添加一个语句级别触发器,该触发器在插入发生期间检查条件,并在超过阈值时阻止相关的 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;
/
推荐阅读
- sqlite - 如何在 Sqlflite Flutter 中使用嵌套模型
- eclipse - 在 Eclipse 中,Oracle Weblogic Server 没有出现在 New Server 窗口中
- python - Scipy稀疏矩阵乘法是否并行?
- windows-10 - Windows 10 更新后设置没有打开?
- job-scheduling - 如何在 Rundeck 中创建一个触发 REST URL 的作业?
- google-cloud-storage - 涓流不限制 gsutil 的带宽
- android - Wear OS 模拟器没有正确响应
- sql - 如何在sql中的条件中填写值
- sql-server - 是否可以为这种情况创建一个复杂的 sql 查询?
- php - 更新mysql数据库但表没有更新时没有错误