我正在学习oracle并试图实现一个触发器之前。我想我的代码是正确的,但是一旦我运行插入语句,触发器不会被调用或使用,但该行仍然插入到表中。任何人都可以看到我做错了什么,或知道为什么触发器不工作?SQL在触发器不工作之前
这是我使用
create or replace
TRIGGER DAY_CHECK BEFORE
INSERT ON AD_SLOT FOR EACH ROW DECLARE p_day AD_SLOT.DAY_OF_WEEK%TYPE;
NOTVALID EXCEPTION;
BEGIN
IF p_day IN ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday') THEN
DBMS_OUTPUT.PUT_LINE('VALID DAY');
ELSE
RAISE NOTVALID;
END IF;
EXCEPTION
WHEN NOTVALID THEN
DBMS_OUTPUT.PUT_LINE('NOT A VALID DAY');
RAISE;
END;
这是我用,应提高例外,因为这一天是无效
insert into ad_slot values (78955, 'testday', 'ER', 'House', 'Taken', 7654321, '05=FEB-2014 21:00:00');
测试用例测试INSERT语句触发使用
INSERT INTO ad_slot (DAY_OF_WEEK) VALUES ('unwanted day');
你永远不会为'p_day'赋值。另外你不能在触发器中使用'commit'或者rollback'。 – 2014-12-02 12:06:45
我如何将它分配给用户输入的值? – Hayes121 2014-12-02 12:08:24
还是会像'select_day_of_week_p_day from ad_slot'那样工作? – Hayes121 2014-12-02 12:09:26