2012-02-08 31 views
5

是否有可能找出未執行INSERT INTO查詢時下一個自動增量對我的主鍵是什麼?有些行被刪除,這意味着它不像在PK上添加一個SELECT MAX查詢那麼簡單。非常感謝。我可以找出下一個使用的auto_increment嗎?

+0

爲什麼你想知道嗎? – Mchl 2012-02-08 10:05:08

+0

是的,請參閱http://stackoverflow.com/questions/933565/get-auto-increment-value-with-mysql-query – 2012-02-08 10:05:53

+0

謝謝。我只是想知道我能否找出價值。 – user114671 2012-02-08 10:08:00

回答

7

如果你真的想知道下一個AUTO_INCREMENT值嘗試SHOW TABLE STATUS回報下一Auto_increment領域,如:

SHOW TABLE STATUS WHERE name = your_table_name; 

SELECT Auto_increment 
FROM information_schema.tables 
WHERE table_schema = DATABASE() AND table_name = your_table_name 
+0

如果你使用'from'的第一個例子,你必須指定一個數據庫名稱,而不是表名,那麼你可以添加'WHERE name = your_table_name'來得到那個表,如果你已經使用了數據庫, FROM database_name',只需使用'WHERE'就像下面的答案 – 2013-04-15 15:34:40

+0

@ aron.duby,你是對的,已被糾正。 – 2013-04-18 16:25:28

0

嘗試以下操作:

SELECT Auto_increment 
    FROM information_schema.tables 
    WHERE table_name= 'tableName' 
    AND table_schema = DATABASE(); 
2

你可以通過執行

來獲得價值
SHOW TABLE STATUS WHERE Name = nameOfTableHere 

,然後從結果

0

這檢索欄「AUTO_INCREMENT」也是可能的:

(SELECT (SELECT your_primary_key FROM Your_Table ORDER BY your_primary_key DESC LIMIT 1)+1); 
+0

如果您要回答一個問題,答案已被接受 - 回答兩年後 - 請給出正確的答案。這是不正確的,因爲它沒有考慮到行被刪除的事實 - 所以你不能只在SELECT MAX中加一個 - 就像我在開篇文章中所說的那樣。 – user114671 2014-02-13 14:42:57

+0

對不起 - 我很內疚。我忘記了LIMIT。更新爲工作解決方案。 SELECT Auto_increment ...在我的情況下不起作用。這就是我添加替代解決方案的原因。 – Valter 2014-02-14 08:24:24

相關問題