【发布时间】:2012-03-30 21:50:25
【问题描述】:
我正在使用 Oracle XE,其中我正在制作自己的自定义触发器。为此,我在 SYSTEM 架构中创建了两个表 INSERTED 和 ORDER_INFO,它们都具有相同的列名 ORDER_ID、ORDER_DATE。在我的场景中,客户将下订单,订单信息将存储到 INSERTED 表中,然后通过使用此触发器,它将插入到另一个表中 ORDER_INFO 满足条件后。
这是我到现在得到的,
CREATE TRIGGER tri_check
AFTER INSERT ON inserted FOR EACH ROW
DECLARE
BEGIN
IF :new.order_date < (SYSDATE + 2)
THEN
RAISE_APPLICATION_ERROR(-20000, 'You cannot take an order to be delivered less than 2 days from now');
ELSE
INSERT INTO orders_info (order_id, order_date)
VALUES (:new.order_id, :new.order_date);
END IF;
END;
在执行上述查询时,我收到此错误
ERROR at line 7: PL/SQL: ORA-00942: table or view does not exist
5. IF :new.order_date < (SYSDATE + 2)
6. THEN
7. RAISE_APPLICATION_ERROR(-20000, 'You cannot take an order to be delivered less than 2 days from now');
8. ELSE
9. INSERT INTO orders_info (order_id, order_date)
需要帮助!!
【问题讨论】:
-
作为向你学习的一点,永远不要将你的对象/表/等添加到 SYSTEM 模式中。这就像将手指伸入正在运行的引擎中。