|Instead of having one price record per item, have many records with history so you can see what the price was when the order was placed.
1,Widget,A standard widget,Widget Co,...
When a new price is added, the
FromDate of the new record and the
ToDate of the previous price are set as Now.
You find the current price by
WHERE ToDate IS NULL
To find a price for an order you can use
WHERE orderdate BETWEEN FromDate and ISNULL(ToDate,Now)
You may add NextPrice and PreviousPrice fields if you need to do a lot of lookups.
(Specific syntax depends on the particular database in use.)