Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Truncate bảng đúng cách trong MySQL (với khóa ngoại)

TRUNCATE TABLE an toàn khi có khóa ngoại (Foreign Key)

Khi các bảng liên quan bằng khóa ngoại, TRUNCATE sẽ báo lỗi. Giải pháp: tạm thời tắt kiểm tra khóa ngoại, truncate, rồi bật lại.

Cú pháp an toàn

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE bang1;
TRUNCATE TABLE bang2;
...
TRUNCATE TABLE bangN;
SET FOREIGN_KEY_CHECKS = 1;

Ví dụ thực tế

mysql> SET FOREIGN_KEY_CHECKS = 0;
Query OK, 0 rows affected (0.00 sec)

mysql> TRUNCATE TABLE skiplasttenrecords;
Query OK, 0 rows affected (0.97 sec)

mysql> TRUNCATE TABLE searchtextdemo;
Query OK, 0 rows affected (0.89 sec)

mysql> SET FOREIGN_KEY_CHECKS = 1;
Query OK, 0 rows affected (0.00 sec)

Kiểm tra:

mysql> SELECT * FROM searchtextdemo;
Empty set (0.00 sec)

mysql> SELECT * FROM skiplasttenrecords;
Empty set (0.00 sec)

⚠️ Lưu ý quan trọng

  • Chỉ dùng trong môi trường dev/test hoặc khi chắc chắn dữ liệu có thể xóa toàn bộ.
  • Trong production, hãy cân nhắc DELETE có điều kiện hoặc backup trước.
  • TRUNCATE reset AUTO_INCREMENT, không kích hoạt trigger, không ghi binlog từng dòng (nhanh hơn DELETE).
  • Luôn bật lại FOREIGN_KEY_CHECKS = 1 ngay sau khi xong.

Tham khảo thêm: DELETE FROM bang WHERE dieu_kien nếu chỉ cần xóa một phần dữ liệu.