我正在创建一个消息系统(使用PHP),并希望为每条消息分配一个ID号(除了每个具有唯一ID号的实际消息)...但是,如果有人回复消息,那么我希望能够给该消息提供与被回复的消息相同的ID ...当然,我可以按时间显示它们并按顺序显示它们.
那么,如果我给字段一个auto_increment类型是否能够被覆盖?
含义...每条新消息都有自动值,例如1,2,3等,但有人回复2号,所以它的ID也需要2
或者有更好的方法吗?
绝对没有什么可以阻止您为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)