触发在phpMyadmin中重新设置表的自动递增

时间:2010-12-02 18:11:03

标签: mysql database triggers phpmyadmin record

我有一个数据库,tvguide,这些是值:

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做什么。

顺便说一下,我为表格制作了一份表格副本。

由于

2 个答案:

答案 0 :(得分: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中徘徊,这应该足够了。

答案 1 :(得分:0)

这是一个相当危险的想法。

让它成长,它不会发生:250000000011使用与你的250000000012相同的地方 表,特别是因为它是一个bigint(8字节)。

否则

  • 你怎么知道比6个月前Id = 25今天Id = 25?
  • 您如何维护完整性约束?你必须确保在更新|删除cascade
  • 的地方到处都有外键
  • 如果您不总是删除表格中的最后一条记录,则自下次添加的记录ID以来有0增益,且至少为先前添加的记录的+1。