MYSQL 能否根据列输入值跟踪多个自动增量?
Can MYSQL keep track of multiple Auto Increments based on a column input value?
我有一个 table,它的基本自动增量称为 post_id
。我还有其他专栏,tag_id
和 tag_name
.
目前,每当我插入这个 table 时,post_id
都会自动递增。但是我还想做的也是根据 tag_name
是什么自动增加 tag_id
。例如,如果 tag_name
是“A
”,那么 tag_id
应该是 1
。接下来插入,tag_name 是“A
” tag_id 是2
。但是,下一个插入,tag_name
是“B
”,tag_id
现在是 1
。等等等等
MyISAM 和 InnoDB 都只支持每个 table.
自增一次
由于竞争条件,在支持并发更新的存储引擎中无法管理任何按组自动递增的功能。
MyISAM 支持auto-increment as a secondary column of a key,因此它为同一键的第一列中的每个值独立编号。但这仍然对你不起作用,因为 MyISAM 不支持每个 table.
两个自动列
mysql> create table MyTable (
-> post_id int auto_increment primary key,
-> tag_name varchar(10),
-> tag_id int auto_increment,
-> unique key (tag_name, tag_id)
-> ) engine=myisam;
ERROR 1075 (42000): Incorrect table definition; there can be only one
auto column and it must be defined as a key
您必须手动为 tag_id 编号。这意味着您无法支持对此 table.
的并发更新
IMO,你应该重新考虑你正在尝试做什么。
我有一个 table,它的基本自动增量称为 post_id
。我还有其他专栏,tag_id
和 tag_name
.
目前,每当我插入这个 table 时,post_id
都会自动递增。但是我还想做的也是根据 tag_name
是什么自动增加 tag_id
。例如,如果 tag_name
是“A
”,那么 tag_id
应该是 1
。接下来插入,tag_name 是“A
” tag_id 是2
。但是,下一个插入,tag_name
是“B
”,tag_id
现在是 1
。等等等等
MyISAM 和 InnoDB 都只支持每个 table.
自增一次由于竞争条件,在支持并发更新的存储引擎中无法管理任何按组自动递增的功能。
MyISAM 支持auto-increment as a secondary column of a key,因此它为同一键的第一列中的每个值独立编号。但这仍然对你不起作用,因为 MyISAM 不支持每个 table.
两个自动列mysql> create table MyTable (
-> post_id int auto_increment primary key,
-> tag_name varchar(10),
-> tag_id int auto_increment,
-> unique key (tag_name, tag_id)
-> ) engine=myisam;
ERROR 1075 (42000): Incorrect table definition; there can be only one
auto column and it must be defined as a key
您必须手动为 tag_id 编号。这意味着您无法支持对此 table.
的并发更新IMO,你应该重新考虑你正在尝试做什么。