DROP TRIGGER default_qu_conversions; CREATE TRIGGER products_default_qu_conversions AFTER INSERT ON products BEGIN -- Create product specific 1:1 conversions when QU stock != QU purchase/consume/price -- and when no default QU conversion apply -- with qu_id_stock != qu_id_purchase INSERT INTO quantity_unit_conversions (from_qu_id, to_qu_id, factor, product_id) SELECT p.qu_id_purchase, p.qu_id_stock, 1, p.id FROM products p WHERE p.id = NEW.id AND p.qu_id_stock != qu_id_purchase AND NOT EXISTS(SELECT 1 FROM quantity_unit_conversions_resolved WHERE product_id = p.id AND from_qu_id = p.qu_id_stock AND to_qu_id = p.qu_id_purchase); -- with qu_id_stock != qu_id_consume INSERT INTO quantity_unit_conversions (from_qu_id, to_qu_id, factor, product_id) SELECT p.qu_id_consume, p.qu_id_stock, 1, p.id FROM products p WHERE p.id = NEW.id AND p.qu_id_stock != qu_id_consume AND NOT EXISTS(SELECT 1 FROM quantity_unit_conversions_resolved WHERE product_id = p.id AND from_qu_id = p.qu_id_stock AND to_qu_id = p.qu_id_consume); -- with qu_id_stock != qu_id_price INSERT INTO quantity_unit_conversions (from_qu_id, to_qu_id, factor, product_id) SELECT p.qu_id_price, p.qu_id_stock, 1, p.id FROM products p WHERE p.id = NEW.id AND p.qu_id_stock != qu_id_price AND NOT EXISTS(SELECT 1 FROM quantity_unit_conversions_resolved WHERE product_id = p.id AND from_qu_id = p.qu_id_stock AND to_qu_id = p.qu_id_price); END;