CREATE TABLE `test` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `order` varchar(255) DEFAULT NULL,
  `des` varchar(255) DEFAULT NULL,  
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;create trigger trigger_test before insert on test
for each row
begin
set new.order =concat('Ord',lpad(cast(new.id as char),5,'0'));
end;不行啊,得到的是00000想要如下效果
id  order des
1   00001
2   00002
咋么才能做到啊SQL

解决方案 »

  1.   

    `id` bigint(20) zerofill NOT NULL AUTO_INCREMENT
    试试
      

  2.   

    zerofill这只是在id前填充0,
    我需要的是order后面的数要和id保持一致
    insert into test(des) values('中国'); 
    select * from test;
      

  3.   

    set new.order =concat('Ord',right(concat('0000',new.id),5))
      

  4.   


    create trigger trigger_test before insert on test
    for each row
    begin
    set new.order =concat('Ord',right(concat('0000',new.id),5));
    end;insert into test(des) values('中国'); 
    select * from test;这样也不行哦,和原来一样的仍是ord00000
    只有在insert into test(id) values(6); 这样才可以
    而这样的insert into test(des) values('中国'); new.id好像就取不到id
      

  5.   

    MYSQL中没办法。 在BEFORE INSERT中无法得到ID的值。 而在AFTER INSERT中又无法更改记录。
      

  6.   


    create trigger trigger_test before insert on test
    for each row
    begin
    declare n int;
    select max(id) into n from test;
    if n is null  then
    set n=1;
    else
    set n=n+1;
    end if;
    case  
    when n<10 && n>=0 then 
    set new.order=concat('ord','0000',cast(n as char));
    when n<100 && n>=10 then
    set new.order=concat('ord','000',cast(n as char));
    when n<1000 && n>=100 then
    set new.order=concat('ord','00',cast(n as char));
    when n<10000 && n>=1000 then
    set new.order=concat('ord','0',cast(n as char));
    else
    set new.order=concat('ord',cast(n as char));
    end case;
    end //
      

  7.   

    DROP TRIGGER IF EXISTS trigger_test;
    DELIMITER $$
    CREATE TRIGGER trigger_test BEFORE INSERT ON testa
     FOR EACH ROW BEGIN 
     SET new.order =CONCAT('Ord',RIGHT(CONCAT('0000',LAST_INSERT_ID()+1),5)); 
     END$$
    DELIMITER ;