我的数据库有表test1。 它有一个主要ID“Id”,它是自动增量。 现在id的格式为1,2,3 .. 。是否可以将主要ID存储为 PNR1,PNR2,PNR3 .. 。等等(有自动增量)。
答案 0 :(得分:5)
没有。在查询中添加前缀,或者改为使用视图。
答案 1 :(得分:4)
不是,但你可以使用另一列(但是一个视图) 这已经在这里介绍: MySQL Auto Increment Custom Values
答案 2 :(得分:1)
是的,如果你有INT前缀,你可以这样做。表
中的id为INT // START PREFIX
$query = mysql_query("SELECT id FROM `table_name` ORDER BY id DESC LIMIT 1");
// GET THE LAST ID MAKE SURE IN TABLE YOU 9991
while ($row = mysql_fetch_object($query)) {
$lastId = $row->id;
}
list($prefix,$Id) = explode('999',$lastId );
$Id = ($Id+1);
$new_id = '999'.$Id;
// END PREFIX
$insertQuery = mysql_query("INSERT INTO `table_name` SET id = '".$new_id."',...");
答案 3 :(得分:0)
嗨,我以这种方式工作:
产品表(产品):
id_prod(varchar(11), NOT NULL, PK), name(varchar(40))
产品序列表(productidseq):
id(AI, PK, NOT NULL)
在产品表中插入触发器之前:
CREATE DEFINER=`root`@`localhost` TRIGGER `dbname`.`products_BEFORE_INSERT` BEFORE INSERT ON `products` FOR EACH ROW
BEGIN
insert into productidseq (id) values(NULL);
set new.id_prod = concat('PROD or any prefix here',last_insert_id());
set @productId = new.id_prod; -- To use outside of trigger this variable is useful.
END
当您运行以下查询时:
insert into products (name) values('Bat');
表中的数据将是这样的:
产品:
id | name
---|-----
1 | Bat
productidseq:
id
---
1
如果有任何比此更好或有任何弊端,请在下面评论。感谢。