2022年8月31日 作者 zeroheart

truncate 遇上外键

方案1

  1. 禁用外键检查;
  2. 执行 TRUNCATE
  3. 恢复外键检查;
SET FOREIGN_KEY_CHECKS = 0;

TRUNCATE TABLE_NAME;
TRUNCATE ANOTHER_TABLE_NAME;

SET FOREIGN_KEY_CHECKS = 1;

方案2

  1. 删除数据;
  2. 重置自增的种子序列(如果有自增字段的话);
DELETE FROM TABLE_NAME;
ALTER TABLE TABLE_NAME AUTO_INCREMENT = 1;

方案3

  1. 删除外键约束;
  2. 执行 TRUNCATE
  3. 增加外键约束;
START TRANSACTION;
ALTER TABLE <Table Name> DROP FOREIGN KEY <Foreign Key Name>;
TRUNCATE <Table Name>;
TRUNCATE <Another Table Name>;
ALTER TABLE <Table Name> ADD CONSTRAINT <Foreign Key Name> FOREIGN KEY <Foreign Key Name>(<Field Name>) REFERENCES <Another Table Name>(<Field Name>);
COMMIT;