Возможно, лучший способ справиться с этой возможностью - добавить ограничения к задействованным таблицам, которые сделают невозможным удаление строки продукта, если существует существующий заказ, использующий этот продукт.Вот как могут выглядеть определения таблиц для Products
и Order_Items
:
CREATE TABLE Order_Items (
order_item_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
order_id INT NOT NULL,
product_id INT NOT NULL,
...
FOREIGN KEY fk_prod (product_id) REFERENCES Products (product_id)
)
CREATE TABLE Products (
product_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(255) NOT NULL,
...
)
С таким дизайном, если кто-то попытается удалить запись продукта из таблицы Products
, пока она существуетВ случае более или более записей позиций заказа, относящихся к этому продукту, попытка удаления будет неудачной.