2013-07-20 64 views
0

我有一個表,用於存儲基本的文章:在不影響自動增量的情況下交換SQL主鍵?

表名:cms_articles

[article_id] , [article_header] , [article_content] 
    1 , test , test content 
    2 , another , something 
    3 , article , text 

我使用下面的SQL交換兩個商品的商品ID的: -

"UPDATE cms_articles SET article_id=99999 WHERE article_id=".$article_id1 
"UPDATE cms_articles SET article_id=".$article_id1." WHERE article_id=".$article_id2 
"UPDATE cms_articles SET article_id=".$article_id2." WHERE article_id=99999" 

因此,我只是在交換時使用臨時ID爲99999的交換ID。

這是有效的,但是當我向表中添加一篇新文章時,它會自動將ID設置爲100000,這要感謝autoincrement,儘管article_id實際上最高爲3!

+2

什麼商業理由你需要交換id? –

回答

0

執行ALTER TABLE語句,並設置AUTO_INCREMENT值

$sql = "ALTER TABLE MY_TABLE AUTO_INCREMENT = 3"; 
+0

工作過,非常感謝! – user2602023

1

先用這些查詢獲取當前自動增量值:

SELECT AUTO_INCREMENT 
FROM information_schema.tables 
WHERE table_name = 'table_name' 
AND table_schema = DATABASE() ; 

然後,讓你的身份證掉。然後設置自動增量值回到其以前的值,如@ DevZer0寫道:

ALTER TABLE MY_TABLE AUTO_INCREMENT = $previous_value 
2

你交換主鍵的效果是什麼? 不要等它沒關係。

由於SQL是一種聲明性編程語言,而不是程序性語言。 交換'主鑰匙'是錯誤的,在這裏糾正你將確保一個無辜的路人不會採取你的放任自由的良好設計原則。

相關問題