oracle sql триггер расчета - PullRequest
       10

oracle sql триггер расчета

0 голосов
/ 28 февраля 2020

У меня проблема с вычислением. мои логики c - это Сумма всего количества акции, которая является Покупкой, код которой 'B'

; также, сумма всех количеств акции, которая продается, код которой является 'S'.

Для того, чтобы узнать, кому принадлежит количество акций для продажи. это количество 'B'quantity -'S', которое должно выйти из количества акций, которыми владеет человек.

select sum(quantity) 
into V_quantityS
from transaction
where :new.portfolio_number = portfolio_number
and :new.stock_code = stock_code
and buy_sell='S'
;

select sum(quantity)
into V_quantityB
from transaction
where :new.portfolio_number = portfolio_number
and :new.stock_code = stock_code
and buy_sell='B'
;

if (V_quantityB-V_quantityS) < :new.quantity then

  Raise_Application_Error(-20020, 'The Investor have not enough stock to sell ');

ELSE 
  update Account 
  set Account_Balance = Account_Balance+(:new.quantity* :new.Price_per_share)
  where V_account_number = Account_Number;

пример итого - собственный 10 в IBM

ID=500, Stock_code ='IBM' code 'B' Quantity = '20' 
ID=500, Stock_code ='IBM' code 'S' Quantity = '10' 

но я могу вставить

INSERT INTO Transaction 
(Portfolio_Number, Transaction_Date, Stock_Code, Exchange_Code, Broker_Number, Buy_Sell, Quantity, Price_Per_Share)
values
    (500, To_Date('12-Feb-2020 16:41:00', 'DD-Mon-YYYY HH24:MI:SS'), 'MEZ', 'TSX', 4, 'S', 11000, 25.55 );

ЕСЛИ вставить второй раз, то есть

INSERT INTO Transaction 
(Portfolio_Number, Transaction_Date, Stock_Code, Exchange_Code, Broker_Number, Buy_Sell, Quantity, Price_Per_Share)
values
    (500, To_Date('12-Feb-2020 16:41:00', 'DD-Mon-YYYY HH24:MI:SS'), 'MEZ', 'TSX', 4, 'S', 1, 25.55 );

независимо от того, сколько акций. это будет вставлено. после этого я не могу вставить, что вызовет ошибку

...