我有一个表,该表使用主键(列名称= 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';

DUMPtbl_casestbl_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;

09-03 18:38