我有一个表,该表使用主键(列名称= caseid)存储支持案例的ID。
我现在有大约100,000个Caseid,但这个数字太大了。我希望以较小的数字(例如1000)开始。
我如何通过不必删除/存档现有记录并且不必将唯一caseid更改为另一列(将其保留为主键列)来实现类似目的
最佳答案
要重置Primary Key
,您可以按照以下步骤操作:
创建具有与temporary table
相同结构的main table
。假设表格名称为tbl_cases
CREATE TABLE tbl_cases_tmp LIKE tbl_cases;
ALTER TABLE tbl_cases_tmp ADD old_caseid int NOT NULL DEFAULT '0';
DUMP
从tbl_cases
到tbl_cases_tmp
的所有数据。 caseid
将存储在old_caseid
列中。INSERT INTO tbl_cases_tmp (name, summary, old_caseid)
SELECT name, summary, caseid FROM tbl_cases;
对于任何其他引用
tbl_cases
的表。假设tbl_reference
UPDATE tbl_reference tr
JOIN tbl_cases_tmp tc
ON tr.caseid = tc.old_caseid
SET tr.caseid = tc.caseid;
在使用步骤4和5之前,请确保正确地更新了表
tbl_cases_tmp
和所有引用。放下
tbl_cases
DROP table tbl_cases;
将
tbl_cases_tmp
重命名为tbl_cases
RENAME TABLE tbl_cases_tmp TO tbl_cases;