Oracle触发器报错ORA-00906:缺少左括号,请求技术支持
问题排查与解决
错误原因
ORA-00906(缺少左括号)的问题出在触发器的WHEN子句语法上。Oracle要求WHEN关键字后必须用括号包裹完整的条件表达式,你的代码直接将EXISTS子查询写在WHEN之后,缺少了外层的括号,导致语法解析失败。
修正后的触发器代码
CREATE OR REPLACE TRIGGER check_limit_to_Y AFTER INSERT OR UPDATE ON api_user FOR EACH ROW WHEN (EXISTS (SELECT '1' FROM profile b WHERE NEW.mvno_limit != 'Y' AND b.mvno_id = NEW.mvno_id)) BEGIN RAISE_APPLICATION_ERROR(-20999, 'MVNO LIMIT MUST BE SET Y FOR ANY REAL MVNO_ID'); END; /
额外优化建议
- 字符串比较优先使用
<>替代!=,前者是ANSI SQL标准写法,兼容性更强 - 代码中的关键字(如
CREATE、OR REPLACE)统一大写,符合Oracle开发的通用规范,提升代码可读性
内容的提问来源于stack exchange,提问作者MARVEL
相关产品推荐
相关产品推荐

