我有一个表,它使用主键(列名 = caseid)存储支持案例的 ID。
我现在大约有 100,000 个 caseid,这个数字太大了。我希望以某种方式从较低的数字开始,例如 1000。
我如何通过不必删除/归档现有记录并且不必将唯一的 caseid 更改为另一列(将其保留为主键列)来实现这样的事情
最佳答案
要重置Primary Key
,您可以按照以下步骤操作:
创建结构与
主表
相同的临时表
。假设表名是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;
关于php - 数据库 |主键需要重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33956377/