92 lines
3.4 KiB
SQL
92 lines
3.4 KiB
SQL
-- 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;
|