修改测试
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
-- ======================================================================
|
||||
-- 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;
|
||||
Reference in New Issue
Block a user