添加前缀以在mysql db中自动增加

时间:2011-05-13 11:22:53

标签: php mysql

我的数据库有表test1。 它有一个主要ID“Id”,它是自动增量。 现在id的格式为1,2,3 .. 。是否可以将主要ID存储为 PNR1,PNR2,PNR3 .. 。等等(有自动增量)。

4 个答案:

答案 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 

如果有任何比此更好或有任何弊端,请在下面评论。感谢。