I have a table.
CREATE TABLE StockItem
(
    id        NUMBER(8) NOT NULL,
    book_id   NUMBER(8) NOT NULL,
    wh_id     NUMBER(8) NOT NULL,
    quantity  NUMBER(4) NOT NULL,
    price     NUMBER(8,2) NOT NULL
);
ALTER TABLE StockItem
    ADD CONSTRAINT UQ_StockItem UNIQUE (book_id, wh_id);
ALTER TABLE StockItem ADD CONSTRAINT PK_StockItem 
    PRIMARY KEY (id);
ALTER TABLE StockItem ADD CONSTRAINT FK_StockItem_Book 
    FOREIGN KEY (book_id) REFERENCES Book (id);
ALTER TABLE StockItem ADD CONSTRAINT FK_StockItem_Warehouse 
    FOREIGN KEY (wh_id) REFERENCES Warehouse (id);
Now suppose wh_id = 1 is closed and I should move all the books to wh_id = 2. Book prices for wh_id = 2 should be the same as they were in wh_id = 1 and quantity should be calculated properly (e.g. increased for the same book_id for two werehouses). How can I do that?
UPD:
Here is how I can get new quantity values for the books.
SELECT BOOK_ID, SUM(QUANTITY) 
FROM STOCKITEM
WHERE WH_ID IN (1, 2)
GROUP BY BOOK_ID;
Now I should update them somehow.
UPDATE STOCKITEM
SET QUANTITY = /* My summed quantity */
WHERE BOOK_ID = /* Book ids from 1 and 2 wh */
 
     
     
     
    