簡體   English   中英

一次檢索數據庫中所有表的 MAX 個主鍵值

[英]Retrieve MAX Primary Key values of all tables in a database at once

我需要做的是檢索所有的表在我的數據庫一次最大的主鍵? 也就是說,如果我執行以下 2 個查詢,我的結果將如下所示:

SHOW TABLES FROM DATABASE_NAME

SELECT MAX(PRIMARY_KEY) AS maxId FROM TABLE

那是

(first column = TableName , second column = MAX(PK) Of that table)

如果我做錯了什么,請原諒。 我只是不想寫 80 個查詢,因為我的數據庫有 80 個表。

如果(且僅當)您的主鍵是AUTO INCREMENT變量,您可以這樣做:

SELECT TABLE_NAME, AUTO_INCREMENT
FROM   information_schema.TABLES
WHERE  TABLE_SCHEMA = 'mydb'

在選擇檢索該信息的方法以及您打算用它做什么時,請注意以下情況:

AUTO_INCREMENT 值存儲在內存中,因此在服務器重啟后,AUTO_INCREMENT 值重置為:

SELECT MAX(ai_col) FROM table_name FOR UPDATE;

如果數據庫缺少 FK,這可能會破壞事情,例如,您刪除了一些引用其他表的行。 你最終會重復使用相同的 id。

參考: https : //dev.mysql.com/doc/refman/5.7/en/innodb-auto-increment-handling.html#innodb-auto-increment-initialization

SELECT  table_schema, table_name, column_name, data_type, extra
    FROM  `columns`
    WHERE  table_schema = 'mydb'
      AND  extra LIKE '%auto_increment%' 

可以選擇將其與 Alnitak 的回答一起JOIN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM