用 日期+自动编号 定义为主键。create table x ( d date, no int auto_increment,  primary key(d,no)

解决方案 »

  1.   

    不能照搬别人的语句啊。
    last_insert_id() 是返回当前进程中最近的一条插入语句 (表中自增性字段的值)。
    如果当前进程没有插入动作, 或者插入的表没有自增性字段,last_insert_id()返回0用此方法, 是无法保证从001开始, 也无法保证中间能连续。保险点,自行写存储过程,大概流程如下start transaction
    SELECT max(PRODUCTID) FROM XXX WHERE  PROCDICID LIKE ‘20140913%’ FOR UPDATE
    如果 没有记录
         为 001
    否则
         +1
    .....
    commit
      

  2.   

    LZ这做法行不通的,这么做需要每执行次insert之前都运行下set ...
      

  3.   

    同求这个问题,字符+年月+后四位自增流水号如:
    ABC14100001
    ABC14100002
    ABC14100003
    这种如何实现呢?
    concat('ABC','date_format(now(),'%y-%m')','0001');