2010-12-02 47 views
0

我有一個數據庫,電視週刊和表的自動遞增這些值:觸發重新設定在phpMyAdmin

id bigint 255 UNSIGNED AUTO_INCREMENT 
programme varchar 255 
default value (which is from another table 
with list of programs, the only linked field that 
is shared with other table):<b><a href="gossipgirl.php">Gossip Girl</a></b> 
channel varchar 255 
airdate DATETIME - actual airtime 
displayair DATETIME (rounded-up datetime, e.g. programme that airs 1.59pm 
would be shown as 2.00pm, or 6.08pm as 6.10pm) 
expiration DATETIME - when program finishes 
episode VARCHAR 255 NULL - has null option if episode unknown 
series VARCHAR 255 
epno VARCHAR 255 - episode number 
setreminder VARCHAR255 (shows "set reminder", sends email to user, but that's 
another thing to work on). 

我想插入觸發到我的數據庫,這樣,如果一個記錄被刪除,ID自動增量自動重新設置?

有關如何完成此任何想法?到目前爲止,我已經手動完成了它,但是我正在查看當我刪除記錄時使用phpMyadmin可以執行的操作。

順便說一句,我做了一個表的副本備份的目的。

謝謝

+0

您不必重置自動增量,只是讓它增長... – ajreal 2010-12-02 18:17:02

回答

1

我同意whitstone86的評論,你可以「讓它增長」。

話雖如此,要隨時更改AUTO_INCREMENT,您可以運行一個ALTER TABLE

一些僞代碼...

SELECT MAX(id)+1 AS max_id_plus_one FROM my_table; 

ALTER TABLE my_table AUTO_INCREMENT = $max_id_plus_one; 

對於生產,競爭條件可能是一個問題。但是,如果只是你在phpmyadmin中玩耍,這應該就足夠了。

0

這是一個相當危險的想法。

讓它增長,它不會發生:250000000011使用與您的 表中的250000000012相同的位置,尤其是因爲它是bigint(8字節)。

否則

  • 你怎麼知道的比編號爲25的6個月前是當今編號= 25?
  • 你如何保持完整性約束?你必須確保你的外鍵到處都是更新|刪除級聯
  • 如果你不總是刪除表中的最後一條記錄,那麼自從下一個添加的記錄Id起至少爲+1之前添加的一個。