我想根據當前的行數重置我的表中的自動增量值。這是我迄今爲止的代碼。MySQL:重置AUTO_INCREMENT
SET @numrows = 0;
SELECT COUNT(*) total, @numrows := COUNT(*) + 1 numrows FROM maj_user ;
ALTER TABLE `maj_user` AUTO_INCREMENT = @numrows ;
這很好,如果我在MySQL Workbench中執行它。但是,我需要將其保存爲SQL文件並將其作爲數據庫導入腳本的一部分執行。如果我這樣做,我得到這個:
ERROR 1064 (42000) at line 39: You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right syntax to
use near '@numrows' at line 1
39行是ALTER TABLE語句。有任何想法嗎?
你不是應該設置'AUTO_INCREMENT'值'IFNULL(MAX(ID),0)+ 1'或無論你的自動遞增列是什麼?僥倖它可能與行數相同,但這絕不是可靠的。 – tadman
在典型情況下,是的。在這種特殊情況下,MAX和COUNT相等的概率是確定的。 – Tanoro
所以你永遠不會*刪除行嗎?那麼你的'AUTO_INCREMENT'如何以錯誤的狀態結束呢? – tadman