mysql的主键根据年份设计问题
需要设计一个表,主键为int (8)
前四位是年份,后四位是数字,比如2012年的就是20120001,增加一条语句就为20120002
到2013年就重新开始,20130001,20130002 这样子。
这该如何实现?用java怎么写?
------解决方案--------------------插入前进行逻辑组装吧
------解决方案--------------------一般就是在程序中实现吧,直接根据日期来生成要方便的多。
------解决方案--------------------get当前年份 +数据库当前年的记录数=前四位是年份,后四位是数字,比如2012年的就是20120001
------解决方案--------------------SQL code
create table tt(aa int);
insert into tt(aa) values('20110001');
select ifnull(zz,(year(now())*10000)+1) from tt,
(select max(aa) zz from tt where aa>(year(now())*10000)) mm;
------解决方案--------------------
------解决方案--------------------
都是 在 程序中实现
------解决方案--------------------
CONCAT(DATE_FORMAT( NOW() ,'%Y'),MID('0000',LENGTH(id)+1),id) id 为你传过来的值
------解决方案--------------------
空闲了 有来逛了下 写了能查出上条 并根据你的要求得到一个插进去的值 看能不能帮到你 不妨试试
SELECT CONCAT(DATE_FORMAT( NOW() ,'%Y'),
MID("0000",LENGTH(MID(IFNULL(MAX(t.id),1),5)+1)+1),MID(IFNULL(MAX(t.id),'00000'),5)+1)
FROM test t
WHERE MID(t.id,1,4) = DATE_FORMAT( NOW() ,'%Y')