2016-11-15 1 views
2

enter image description here私は数量変数を持つバルク在庫表を持っています。私はまた、購入注文と呼ばれるテーブルの数量変数を持っています。ユーザが購買発注を行うと、購買発注テーブルに挿入した数量がバルク在庫表で削除されます。私はApexというSQLのOracleソフトウェアを使ってこれをやっています。Apex Oracle SQLの別のテーブルの行値を使用してテーブル行の値を更新する方法はありますか?

Error: ORA-01747: invalid user.table.column, table.column, or column specification 

これはpurchase_order.order_quantity後に余分なコンマがあり

UPDATE Bulk_stock 
    SET Bulk_stock.bulk_quantity = Bulk_stock.bulk_quantity - purchase_order.order_quantity, 

WHERE EXISTS 
     (SELECT 1 
     FROM purchase_order 
     WHERE Bulk_stock.stock_id = purchase_order.stock_id); 
+0

あなたはバインド変数としてクエリに現在の発注書IDの値を渡してもらえますか?残りのコードはどのように見えますか? –

+0

挿入は、そのoracle apex形式を使用して自動的に行われます。これは、上記の画像に従って挿入が行われた後にページにプロセスとして配置したいコードです。余分なコードはありません – kuhle

+0

このビジネスロジックをカプセル化するためにデータベースに 'TRIGGER'を作成することは許可されていますか? –

答えて

0

私のコードです:私は、私は信じているSQL構文に苦しんでいます。あなたのアップデートステートメントに加えて、Bulk_stockテーブルで更新が行われているため、purchase_order.order_quantityを参照してください。正しくありません。

あなたが試すことができ、この1:

UPDATE Bulk_stock 
    SET Bulk_stock.bulk_quantity = Bulk_stock.bulk_quantity - nvl(SELECT purchase_order.order_quantity 
     FROM purchase_order 
     WHERE purchase_order.stock_id = Bulk_stock.stock_id WHERE ROWNUM=1), 0) WHERE EXISTS 
    (SELECT 1 
    FROM purchase_order 
    WHERE Bulk_stock.stock_id = purchase_order.stock_id); 
+0

これは常に 'Bulk_stock'のすべての行を更新しますか? –

+0

はい。しかし、更新後は、順序付けられた数量を反映する値が他の値に変更されないと、bulk_quantityは変更されません。 – randominstanceOfLivingThing

+0

そうですね、テーブルに何百万もの行があると、これは高価な操作になる可能性があります。 –

関連する問題