如何解决无法在 CHECK CONSTRAINT 中引用自定义函数
我有一个表的列必须小于某个值,问题是这个值存储在另一个表中,所以我无法引用它,所以经过一些研究我发现我可以使用一个函数并调用它在检查约束中,这是我的功能
create or replace FUNCTION check_caution(id_cont in NUMBER)
return number
as res number ;
begin
select amount_contract*caution_offre_f*0.01 into res from contract
where id_contract=id_cont;
return res;
end check_caution;
该功能运行良好,我对其进行了测试。 这是我的检查约束
alter table caution_exe
add CONSTRAINT check_amount
check (caution_exe.amount_caution<=check_caution(caution_exe.id_contract));
但这是我尝试添加后收到的消息
ORA-00904: "CHECK_CAUTION": invalid identifier
00904. 00000 - "%s: invalid identifier"
解决方法
由于您无法在 SELECT
CUSTOMER_ID,ALIAS_ID,SUBSTR(ULTIMATE_NAME,70) as ULTIMATE_NAME,MODEL_SUB_TYPE,CASE
WHEN MODEL_SUB_TYPE LIKE 'CI_COM_%' THEN ULTIMATE_POD
END AS OLD_PD,SUM(
CASE
WHEN MODEL_SUB_TYPE LIKE 'CI_COM_%' THEN CREDIT_LIMIT_NET_EXPOSURE
END
) AS OLD_EXP,SUM(EC_CONSUMPTION_ND) AS OLD_ECAP,ULTIMATE_RATING AS RATING
FROM
CALC6619.SO_REPORTING -- OLD QUARTER --
WHERE
MODEL_TYPE LIKE 'IR'
AND MODEL_SUB_TYPE LIKE 'CI_%'
AND CUSTOMER_ID = '09781C1 01' -- Customer ID
GROUP BY
CUSTOMER_ID,ULTIMATE_NAME,ULTIMATE_POD,ULTIMATE_RATING
约束中引用自己的函数,因此请创建一个 触发器 来完成该工作。像这样:
check
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。