Chapter 10C – Managing Databases with MySQL 5.7
Page 10C-136
(2) Deleting a SHIPMENT when the last SHIPMENT_ITEM is deleted.
MySQL will not support an appropriate trigger in this case. We cannot use a view, since MySQL
does not support INSTEAD OF triggers. Note that associated SHIPMENT_RECEIPT rows may
be deleted via CASCADE DELETE when the SHIPMENT row is deleted.
# Check to see if the SHIPMENT has more than one SHIPMENT_ITEM.
SELECT COUNT(*) INTO varRowCount
FROM SHIPMENT_ITEM
WHERE ShipmentID = varShipmentID;
# IF varRowCount = 1 THEN DELETE the shipment.
# Start transaction – Rollback everything if unable to complete it.
# DELETE the SHIPMENT_ITEM.
DELETE FROM SHIPMENT_ITEM
WHERE ShipmentID = varShipmentID
AND ShipmentItemID = varShipmentItemID;