CREATE MATERIALIZED VIEW ORDERS_MV
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND AS
SELECT * FROM ORDERS;
---------------------------------------
CREATE OR REPLACE TRIGGER update_ship_receive
INSTEAD OF INSERT ON ORDERS_MV
FOR EACH ROW
BEGIN
UPDATE ORDERS SET EXPECTED_SHIP_DATE = ORDER_DATE+5;
UPDATE ORDERS SET EXPECTED_RECEIVE_DATE = SHIP_DATE+1
WHERE SHIPPING_METHOD = '1 DAY';
UPDATE ORDERS SET EXPECTED_RECEIVE_DATE = SHIP_DATE+2
WHERE SHIPPING_METHOD = '2 DAY';
UPDATE ORDERS SET EXPECTED_RECEIVE_DATE = SHIP_DATE+5
WHERE SHIPPING_METHOD = 'GROUND';
END;
/
1116 次
3 に答える
4
Oracleはテーブル構造を見ることができます。できません。Oracleがあなたのコードに問題を見つけているに違いない。
エラーのある最初の行を指している必要があります。そうでない場合は、user_errorsから*を選択します。
おそらく、ORDERSテーブルにSHIP_DATEがありません(最初のステートメントがEXPECTED_SHIP_DATEについて説明しているため)。
于 2011-03-04T05:54:14.317 に答える
3
オラクルの男ではありませんが、使用すべきではありません
:OLD.SHIP_DATE
また
:NEW.SHIP_DATE
と
:OLD.ORDER_DATE
また
:NEW.ORDER_DATE
于 2011-03-04T05:32:14.560 に答える
1
申し訳ありませんが、注文テーブルにo BEFORE INSERTトリガーを作成してみませんか?BEFORE INSERTトリガーを作成するときに、注文テーブルに新しい行を追加する場合は、.NEW.EXPECTED_SHIP_DATE、.NEW.EXPECTED_RECEIVE_DATE更新注文テーブルを使用できます。注文のマテリアライズドビューを作成しないでください
于 2011-03-04T07:55:29.330 に答える