delimiter $$
create
/*[definer = ]*/
trigger `ce`.`myt` before insert
on `ce`.`my3`
for each row begin
set new.id = concat('ck',lpad(((select substring(id,3,8) from my3 where id = (select id from my3 order by substring(id,3,6) desc limit 1))+1),4,0));
end$$
delimiter ;
delimiter $$
實現初始化為ck1000
use `ce`$$
/*字串拼接數字。實現數字的自增
*/drop trigger /*!50032 if exists */ `my3`$$
create
/*!50017 definer = 'root'@'localhost' */
trigger `my3` before insert on `my3`
for each row begin
set new.id = ifnull(concat('ck',lpad(((select substring(id,3,8) from my3 where id = (select id from my3 order by substring(id,3,6) desc limit 1))+1),4,0)),"ck1000");
end;
$$delimiter ;
因為使用者表中使用者編號不是int型別,想實現自動自增功能,使用內建的方法肯定是行不通的,所以,使用了複雜的查詢方法及拼接方式,
此方法雖然比較笨,但還是可以執行的的。
採用觸發器方式,詳細思路:
1、使用查詢語句查出表中最後一條資料的id:
select user_no from user order by user_no desc limit 1
2、使用substring函式擷取最後一條bh-******xx中數字部分:
select substring(user_no,4,8) from user where user_no=(select user_no from user order by user_no desc limit 1)
上面的意思是從第4位開始擷取,截到第8位
3、使用concat語句進行字串連線:
concat('bh-',(select substring(user_no,4,8) from user where user_no=(select user_no from user order by user_no desc limit 1) +1));
這裡需要注意:我一開始認為只要在結果上 +1,然後拼接就行了,其實實際上並不是我想象中的 bh-00000002,而是bh-2,所以,這裡採用lpad函式進行優化,結果如下:
concat('bh-',lpad(((select substring(user_no,4,8 from user where user_no=(select user_no from user order by user_no desc limit 1))+1),8,0));
然後,完整的**如下:
create trigger `t` before insert on `user`
for each row begin
set new.user_no=concat('bh-',lpad(((select substring(user_no,4,8 from user where user_no=(select user_no from user order by user_no desc limit 1))+1),8,0));
end;
mysql varchar最大長度
mysql中varchar最多能儲存65535個位元組的bai資料。du varchar 的最大長度受限於最大行zhi長度 max row size,65535bytes 65535並不是乙個很精確的上限,可dao以繼續縮小這個上限。65535個位元組包括所有欄位的長度,變長字段的長度標識 每個變長...
MySQL Varchar的新認識
mysql中的char,varvhar以及text型別一直是需要被搞清楚的一回事,他們之間的大致的區別在網上都有。我查了以後發現對於varchar,網上說的是最大長度為65535個位元組 網上說mysql5.0.3之後才有,5.0.3之前varchar的最大值並沒有那麼大,這個說法我並沒有去求證 於...
mysql varchar最大的長度
a 儲存限制 varchar 欄位是將實際內容單獨儲存在聚簇索引之外,內容開頭用1到2個位元組表示實際長度 長度超過255時需要2個位元組 因此最大長度不能超過65535 2的16次方 1 b 編碼長度限制 字元型別若為gbk,每個字元最多佔2個位元組,最大長度不能超過32766 字元型別若為utf...