已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。
昨天关门了。
Improve this question
考虑一下
table ABCD123
Having fields
is_alpha char(1) check(is_alpha in ('Y','N')),
is_alphanum char(1) check(is_alpha in ('Y','N')),
alpha varchar2(10),
no number ;
CREATE OR REPLACE TRIGGER check_trigger
BEFORE INSERT ON ABCD123
FOR EACH ROW
BEGIN
IF :new.is_alpha = 'Y' AND (:NEW.alpha IS NULL) THEN
RAISE_APPLICATION_ERROR(-20001, 'Error: Field cannot be null for is_chemo true.');
END IF ;
IF :new.is_alphanum = 'Y' AND (:NEW.alpha IS NULL OR :NEW.no IS NULL ) THEN
RAISE_APPLICATION_ERROR(-20001, 'Error: Field cannot be null for is_alphanum true.');
END IF;
END;
如果我尝试插入值Y到is_alpha,Y到is_alphanum,然后离开字段而不输入任何内容,那么我预计错误将是
ORA-20001 Error:Field cannot be null for is_alpha true.'
ORA-20001 Error:Field cannot be null for is_alphanum true.'
1条答案
按热度按时间gupuwyp21#
一个选项可能是为各种缺失值设置一个 flag,然后决定显示哪个消息。因为,你的代码将引发它遇到的第一个错误,所有其他错误都将被忽略。
修改触发器:
测试: