比方说我一张表里的一个字段为varchar类型,我想按照一定的格式自动增长
例如:第一条为:S2002001
      第二条为:S2002002
那么第三条插入时我想让它自动为:S2002003
请问这应该怎么做到呢

解决方案 »

  1.   

    varchar 中无法仅用MYSQL的字段定义实现。auto_increment 仅对数字型有效。
    你有两种方法。
    1. 建两个字段 f1 varchar(5), f2 int auto_increment , 其中 f1 为 'S2002' 通过select 查询可以形成 concat(f1,mid(10000+f2,2)), 或者简单点只需要一个f2 int字段,然后直接 concat('S',2002000+f2)2. 利用触发器。显然,以你一楼的需求说明为准,建议直接使用方法一。
      

  2.   

    为一个字段自动增长再重新做张表明显会降低程序运行速度,
    不是再建一张表,而是把你目前这张表的这个字段改为int 在触发器中能写正则表达式完成这一操作 这个正则表达式请问应该怎么写啊
    触发器中也不需要用正则啊,直接取到最大的这个字段,然后取出数字部分+1就行了。
      

  3.   

    1楼说的是个好办法,分开字段做,但是这样在取数据时会麻烦点,不如把s去掉,直接放int型的数据,在取出数据时,直接加上s,就不需要存储这个s了
      

  4.   

    我也想实现与楼主类似的功能。到网上找了一下资料。mysql语句是这样的。
    create  table user(
    user_name  varchar(20)  not null primary key auto_increment,
    password varchar(20) not null,
    author int(4) not null
    )auto_increment=00000000;但不知道为啥会报错。
    1063-Incorrect column specifier for column 'user_name'
      

  5.   

    我也想实现与楼主类似的功能。到网上找了一下资料。mysql语句是这样的。
    create  table user(
    user_name  varchar(20)  not null primary key auto_increment,
    password varchar(20) not null,
    author int(4) not null
    )auto_increment=00000000;但不知道为啥会报错。
    1063-Incorrect column specifier for column 'user_name'
      

  6.   

    create  table user(
    user_name  int unsigned  not null primary key auto_increment,
    password varchar(20) not null,
    author int(4) not null
    )auto_increment=00000000
    后来自己又改了一下。