MYSQL生成日期+序号的流水号

PQianbei 2014-09-13 09:47:42
根据当前日期自动生成递增的productID:
20140913001
20140913002
20140914001

按照论坛上另外一个帖子上写的触发器:
set new.productID=CONCAT(DATE_FORMAT(CURDATE(),'%Y%m%d'),RIGHT(CONCAT('00',LAST_INSERT_ID()+1),3))
但是每次都生成的是20140913001
请问该作何修改。

表结构如下:
...全文
2699 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
梓羿 2014-10-08
  • 打赏
  • 举报
回复
同求这个问题,字符+年月+后四位自增流水号如: ABC14100001 ABC14100002 ABC14100003 这种如何实现呢? concat('ABC','date_format(now(),'%y-%m')','0001');
chengchow2001 2014-09-28
  • 打赏
  • 举报
回复
LZ这做法行不通的,这么做需要每执行次insert之前都运行下set ...
PQianbei 2014-09-13
  • 打赏
  • 举报
回复
貌似还是不行呢。请看看
trainee 2014-09-13
  • 打赏
  • 举报
回复
不能照搬别人的语句啊。 last_insert_id() 是返回当前进程中最近的一条插入语句 (表中自增性字段的值)。 如果当前进程没有插入动作, 或者插入的表没有自增性字段,last_insert_id()返回0 用此方法, 是无法保证从001开始, 也无法保证中间能连续。 保险点,自行写存储过程,大概流程如下 start transaction SELECT max(PRODUCTID) FROM XXX WHERE PROCDICID LIKE ‘20140913%’ FOR UPDATE 如果 没有记录 为 001 否则 +1 ..... commit
ACMAIN_CHM 2014-09-13
  • 打赏
  • 举报
回复
日期+自动编号 定义为主键。 create table x ( d date, no int auto_increment, primary key(d,no)
ACMAIN_CHM 2014-09-13
  • 打赏
  • 举报
回复
引用 3 楼 jaredlong 的回复:
貌似还是不行呢。请看看
结果什么产?插入几条试试。

56,803

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧