-- Rename product tables (drop bms_ prefix) and remove base price version SET NAMES utf8mb4; -- 1) Drop FK from country -> product if present SET @fk := ( SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'bms_product_country' AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND CONSTRAINT_NAME = 'fk_product_country_pid' LIMIT 1 ); SET @sql := IF(@fk IS NULL, 'SELECT 1', CONCAT('ALTER TABLE bms_product_country DROP FOREIGN KEY ', @fk)); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 2) Drop version index / column on country SET @idx := ( SELECT INDEX_NAME FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'bms_product_country' AND INDEX_NAME = 'idx_product_country_ppv' LIMIT 1 ); SET @sql := IF(@idx IS NULL, 'SELECT 1', 'ALTER TABLE bms_product_country DROP INDEX idx_product_country_ppv'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @col := ( SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'bms_product_country' AND COLUMN_NAME = 'ppv_id' LIMIT 1 ); SET @sql := IF(@col IS NULL, 'SELECT 1', 'ALTER TABLE bms_product_country DROP COLUMN ppv_id'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- Also handle already-renamed country table SET @idx := ( SELECT INDEX_NAME FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'product_country' AND INDEX_NAME = 'idx_product_country_ppv' LIMIT 1 ); SET @sql := IF(@idx IS NULL, 'SELECT 1', 'ALTER TABLE product_country DROP INDEX idx_product_country_ppv'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @col := ( SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'product_country' AND COLUMN_NAME = 'ppv_id' LIMIT 1 ); SET @sql := IF(@col IS NULL, 'SELECT 1', 'ALTER TABLE product_country DROP COLUMN ppv_id'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 3) Drop version table DROP TABLE IF EXISTS bms_product_price_version; DROP TABLE IF EXISTS product_price_version; -- 4) Rename tables (skip if already renamed) SET @t := ( SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'bms_product' LIMIT 1 ); SET @sql := IF(@t IS NULL, 'SELECT 1', 'RENAME TABLE bms_product TO product'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @t := ( SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'bms_product_country' LIMIT 1 ); SET @sql := IF(@t IS NULL, 'SELECT 1', 'RENAME TABLE bms_product_country TO product_country'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 5) Recreate FK product_country.product_id -> product.product_id SET @fk := ( SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'product_country' AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND CONSTRAINT_NAME = 'fk_product_country_pid' LIMIT 1 ); SET @sql := IF( @fk IS NOT NULL, 'SELECT 1', 'ALTER TABLE product_country ADD CONSTRAINT fk_product_country_pid FOREIGN KEY (product_id) REFERENCES product (product_id) ON DELETE CASCADE' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;