在 Mysql 中截斷所有的表

Subhan Hagverdiyev 2023年1月30日 2022年5月13日
  1. 從命令列截斷 Mysql 中的所有表
  2. 對所有表使用截斷指令碼
在 Mysql 中截斷所有的表

今天我將向你展示如何在 Mysql 中截斷所有的表。當你要刪除整個表時使用 TRUNCATE TABLETRUNCATE 是一種 DML 語句型別,這意味著它一旦提交就不能回滾。

有兩種方法可以截斷 MySQL 中的所有表。

從命令列截斷 Mysql 中的所有表

mysql mydb -Nse 'show tables' | while read table; do mysql mydb -e "truncate table $table"; done

讓我們看看這段程式碼的一般作用:mysql mydatabase -Nse 'show tables' 一張一張地列印 mydb 資料庫中的所有表。while read table 為資料庫中的每個表執行一個迴圈。

mysql db -e "truncate table $table" 對每個 $table 變數值執行截斷查詢。

對所有表使用截斷指令碼

CREATE TABLE table_name (table_id INT);
CREATE TABLE table_name1 (table_id INT);
insert into table_name values (1);
insert into table_name values (2);
insert into table_name1 values (34);
insert into table_name1 values (35);
SELECT Concat('TRUNCATE TABLE ', table_name, ';') 
FROM INFORMATION_SCHEMA.TABLES

讓我們檢查一下表現在是否為空:

SELECT * FROM table_name

輸出:

Empty set (0.01 sec)

請注意,如果你的表具有相互引用的外來鍵,那麼在執行此指令碼之前,你需要確保已禁用外來鍵。

SET FOREIGN_KEY_CHECKS=0;

在你截斷你的表之後,你可以啟用它。

SET FOREIGN_KEY_CHECKS=1;
Subhan Hagverdiyev avatar Subhan Hagverdiyev avatar

Subhan is a professional back-end developer as well as mobile developer. He is also open-source contributor by writing articles.

LinkedIn

相關文章 - MySQL Table