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
请问该作何修改。

表结构如下:
...全文
2552 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 的回复:
貌似还是不行呢。请看看
结果什么产?插入几条试试。
  大家好,我是录制课程的老师,课程已经上线课堂,欢迎大家试听,感谢同学们的支持。在你们的学习中我会全力助你提升MySQL技能,助你冲击更高年薪。支持课程答疑,支持一对一答疑服务,由课程老师直接回答。    MySQL凭借着它不错的性能、不错的稳定性、数据的安全性常年稳居行业老二宝座。    越来越多的DBA和后端同学在工作中少不了和MySQL打交道,也经常会产生这样的疑问:    为什么我写的sql语句性能这么低?  为什么明明我建了索引却没有用到索引?  为什么突然我的数据就成了乱码?  为什么我备份的文件在主库恢复,数据无法同步到从库?  为什么我的数据库数据不多,却占了很多的空间?  生产中我应该选择哪种隔离级别?  生产中都在使用innodb存储引擎,我却对它一无所知?  我应该怎么规划缓冲池才能让数据库性能更高?  为什么我做表数据迁移这么慢?  为什么我写的sql会造成那么多的锁冲突、死锁?  为什么我不能将数据恢复到任意时间点?  为什么我不能解决公司主从复制架构中的故障?  吧啦吧啦一大堆问题……    在面试中MySQL的一些知识更成为躲不过的问题,比如b+tree索引、MVCC、隔离级别的实现、锁的使用,主从复制,MySQL性能优化、事务两阶段提交等等都成为了面试考题重灾区。    我的课程就是从实际工作来,从问题出发,带着问题来学习MySQL,想解决问题就要学习新的知识,大家跟紧老司机,MySQL的面纱就会慢慢摘下。

56,679

社区成员

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

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