用uuid生成20位的主键
SELECT LEFT(REPLACE(UUID(), '-', ''),20) FROM DUAL
另一种方法:
因为数据库中有字母
需要排序的时候去除字母,重新取最大值,然后加1算作新的主键
SELECT IFNULL(DEPT_ID,0)+1 FROM base_dept ORDER BY DEPT_ID+0 DESC LIMIT 0,1
或者
使用MySQL函数CAST/CONVERT:
mysql为我们提供了两个类型转换函数:CAST和CONVERT,现成的东西我们怎能放过?
所以我们也可以用CAST解决问题:
SELECT IFNULL(DEPT_ID,0)+1 FROM base_dept ORDER BY CAST(DEPT_ID as SIGNED) DESC LIMIT 0,1;
也可以使用CONVERT来搞定此问题:
SELECT IFNULL(DEPT_ID,0)+1 FROM base_dept ORDER BY CONVERT(DEPT_ID,SIGNED) DESC LIMIT 0,1;