У меня проблема с вычислением. мои логики 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 );
независимо от того, сколько акций. это будет вставлено. после этого я не могу вставить, что вызовет ошибку