Files
BMS/bms-back/sql/price/quote_uuid_alter.sql
T
2026-09-10 14:23:58 +08:00

41 lines
1.9 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ======================================================================
-- prc_quote / prc_quote_fee 主键改 UUID 改造(VARCHAR(36))
--
-- 背景:测试大数据量场景下 UUID 主键的查询性能
-- 风险:会清空 prc_quote / prc_quote_fee 全部数据
-- 备份:quote_uuid_backup.sql(保留原始 schema)
--
-- 关键顺序(踩坑总结):
-- 1. DROP FOREIGN KEY
-- 2. TRUNCATE TABLE
-- 3. **先 MODIFY 列去掉 AUTO_INCREMENT**,再 DROP PRIMARY KEY
-- 否则 InnoDB 报 1075「auto column must be defined as a key」
-- 4. 再 MODIFY quote_id 列 / ADD PRIMARY KEY
-- 5. ADD FOREIGN KEY 时**会自动创建 quote_id 索引**,不要额外 ADD INDEX
-- 否则报 1061「Duplicate key name」
--
-- 回滚:参考 quote_uuid_backup.sql,重建表结构即可
-- ======================================================================
-- === 1. 解除外键 ===
ALTER TABLE prc_quote_fee DROP FOREIGN KEY fk_quote_fee_quote;
-- === 2. 清空数据 ===
TRUNCATE TABLE prc_quote_fee;
TRUNCATE TABLE prc_quote;
-- === 3. prc_quote: PK 改 UUID ===
-- 顺序很关键:先 MODIFY 列去掉 AUTO_INCREMENT
ALTER TABLE prc_quote MODIFY quote_id VARCHAR(36) NOT NULL COMMENT '试算ID(UUID)';
ALTER TABLE prc_quote DROP PRIMARY KEY;
ALTER TABLE prc_quote ADD PRIMARY KEY (quote_id);
-- === 4. prc_quote_fee: PK 改 UUID; quote_id 列同步 ===
ALTER TABLE prc_quote_fee MODIFY fee_id VARCHAR(36) NOT NULL COMMENT '费用明细ID(UUID)';
ALTER TABLE prc_quote_fee DROP PRIMARY KEY;
ALTER TABLE prc_quote_fee MODIFY quote_id VARCHAR(36) NOT NULL COMMENT '试算ID(UUID)';
ALTER TABLE prc_quote_fee ADD PRIMARY KEY (fee_id);
-- === 5. 重建 FK(自动创建 idx_quote_fee_quote_id 索引,无需手动加) ===
ALTER TABLE prc_quote_fee ADD CONSTRAINT fk_quote_fee_quote
FOREIGN KEY (quote_id) REFERENCES prc_quote (quote_id) ON DELETE CASCADE;