sql >> データベース >  >> RDS >> Oracle

子レコードの選択、値の乗算、および親レコードの更新をトリガーします

    あなたにはいくつかの問題がありますが、最も基本的な問題は、これをまったく行うべきではないということです。常に計算できる値を保存し、同期を維持しようとすることは、基本的な設計上の欠陥です。

    さて、コード自体に。あなたは

    SELECT SUM(VALUE) into product
    

    INTOのターゲットは、宣言された変数である必要があります。列名に..を選択しようとしているようです。

    ローカル変数に列名を区別するために名前を付ける必要があります。したがって、

    の代わりに
    DECLARE
    value number;
    amount number;
    total number;
    

    持っている必要があります

    DECLARE
    v_value number;
    v_amount number;
    v_total number;
    

    逆に、テーブルと列の標準的な命名規則について考える必要があります。列には、、つまりORDER_ID、PRODUCT_NAMEなどの形式の名前を使用して推奨します。PRODUCT_ID_PRODUCT、ORDER_ID_ORDERとは何ですか?通常、列名でテーブル名を繰り返すことは有益ではありません。 ORDERSテーブルのid列にORDER_IDという名前が付けられているように、形容詞の名詞形式に従っているため、意味がある場合もあります。テーブル名についても考えてみてください。テーブルは特定のエンティティの複数のインスタンスを追跡するため、通常はテーブル名を複数形の名詞にします。個々の行がエンティティの単一のインスタンスを追跡するため、テーブル名が列名(ORDER_IDなど)にとって意味がある場合、それは単数になります。

    最後に、テーブルを知らずにコーディングの変更を推奨することは困難です。あなたはそれらについて漠然とした説明をしましたが、すべてをテーブルに置く方が良いでしょう。 minimum-reproducible-example を参照してください



    1. グループ化された小文字の列を選択するか、Rails 4でlower(column)を選択します

    2. MySQLは複数の列から値を選択して計算します

    3. 日付フィールドをインクリメントしようとすると、MySQLが重複エントリエラーを出しますか?

    4. なぜ多くのテーブルORACLEがデフォルトで12cなのですか?