売上累計と売上明細に関する仮想問題

ある UPDATE を行うとデータが全部消えてしまうというのです。担当者は一体、何をしてしまったのだろう。

依頼事項) 売上累計と売上明細に関する累計処理

当日の締め処理で売上明細を集計して売上累計に積算処理お願いします… ついでに更新日をキーに商品毎に1回だけ実行するように配慮しておいてください。

テーブルレイアウト

売上明細  ⇒⇒⇒ 積算処理 ⇒⇒    売上累計
------------------------------    ---------------------------------
商品コード   CHAR(2)   NN / PK     商品コード     CHAR(2)   NN / PK
本日販売数   NUMBER(4) NN          総販売数       NUMBER(8) NN
販売日       DATE      NN          更新日         DATE

NN = NOT NULL / PK = PRIMARY KEY

  • 担当者の作成したSQL
UPDATE 売上累計
SET 総販売数 =
    総販売数 + (
            SELECT SUM(本日販売数) FROM 売上明細
            WHERE 売上明細.商品コード = 売上累計.商品コード
                  AND 売上明細.販売日 >= TRUNC(SYSDATE)
                  AND 売上明細.販売日 <  TRUNC(SYSDATE+1)
    ),
    更新日 = SYSDATE
 WHERE
    更新日 < TRUNC(SYSDATE+1)

このSQLは「ある」条件で例外が発生し終了する。 もし総販売数がNOT NULL制約が存在しなければ、例外は発生せずに売上データを失うことになっていた。

売上累計と売上明細に関する仮想問題(解答)

 


売上累計と売上明細に関する仮想問題の関連トピックス

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle のライセンスがわからない…
Oracle Direct (ネットで聞いても最後はここで要確認)