MySQL覆盖auto_increment?

Dar*_*ney 4 php mysql

我正在创建一个消息系统(使用PHP),并希望为每条消息分配一个ID号(除了每个具有唯一ID号的实际消息)...但是,如果有人回复消息,那么我希望能够给该消息提供与被回复的消息相同的ID ...当然,我可以按时间显示它们并按顺序显示它们.

那么,如果我给字段一个auto_increment类型是否能够被覆盖?

含义...每条新消息都有自动值,例如1,2,3等,但有人回复2号,所以它的ID也需要2

或者有更好的方法吗?

Álv*_*lez 9

绝对没有什么可以阻止您为AUTO_INCREMENT列分配任意值.如有必要,表格计数器将相应调整.

但是,您不能将其设置为AUTO_INCREMENT不唯一的列.

老实说,我无法理解你的设计.典型的消息传递系统如下所示:

message_id in_reply_to
========== ===========
         1        NULL
         2        NULL
         3           1
         4        NULL
         5           1
         6           3
         7        NULL
Run Code Online (Sandbox Code Playgroud)

复制ID类似于使用ID的目的.

更新#1: OMG,似乎在某些情况下它实际上可以完成:

对于MyISAM表,您可以在多列索引中的辅助列上指定AUTO_INCREMENT.在这种情况下,AUTO_INCREMENT列的生成值计算为MAX(auto_increment_column)+ 1 WHERE prefix = given-prefix.当您想要将数据放入有序组时,这非常有用.

http://dev.mysql.com/doc/refman/5.5/en/example-auto-increment.html

更新#2:对于记录,我刚刚测试了它,你也可以在InnoDB表中使用重复的自动递增ID:

CREATE TABLE foo (
    foo_id INT(10) NOT NULL DEFAULT '0',
    bar_id INT(10) NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (foo_id),
    INDEX bar_id (bar_id)
)
ENGINE=InnoDB
Run Code Online (Sandbox Code Playgroud)