如何用mysql或Navicat实现流水号的插入 表明:zbbook字段:zbSerial(主键,字符型),name,content,lastTime,state要求:zbSerial编号规则:ZBYYYYMMDDNNN,'ZB'固定,YYYYMMDD是当前时间,NNN是3位流水号例如:ZB20090926001,ZB20090926002,ZB20090926003如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 mysql> select concat('ZB',replace(curdate(),'-',''),'001');+----------------------------------------------+| concat('ZB',replace(curdate(),'-',''),'001') |+----------------------------------------------+| ZB20090926001 |+----------------------------------------------+1 row in set (0.00 sec) mysql> select concat('ZB',replace(curdate(),'-',''),id) from test;+-------------------------------------------+| concat('ZB',replace(curdate(),'-',''),id) |+-------------------------------------------+| ZB20090926001 || ZB20090926002 || ZB20090926003 |+-------------------------------------------+3 rows in set (0.00 sec)mysql> select * from test;+-----+| id |+-----+| 001 || 002 || 003 |+-----+3 rows in set (0.00 sec) mysql> create table test(id int(3) zerofill auto_increment not null ,primary key(id) );Query OK, 0 rows affected (0.16 sec) 可以用触发器实现。mysql> create table zbbook(zbSerial char(13) default '' primary key,name varchar(10),content varchar(10),lastTime date,state varchar(10));Query OK, 0 rows affected (0.09 sec)mysql> delimiter |mysql>mysql> CREATE TRIGGER tr_zbbook_bi BEFORE INSERT ON zbbook -> FOR EACH ROW BEGIN -> declare n int; -> select IFNULL(max(right(zbSerial,3)),0) into n from zbbook where mid(zbSerial,3,8)=DATE_FORMAT(CURDATE(),'%Y%m%d'); -> set NEW.zbSerial=concat('ZB',DATE_FORMAT(CURDATE(),'%Y%m%d'),right(1001+n,3)); -> END; -> |Query OK, 0 rows affected (0.03 sec)mysql>mysql> delimiter ;mysql> insert into zbbook(name,content,lastTime,state) values('A1','AAAA1',CURDATE(),'N1');Query OK, 1 row affected (0.08 sec)mysql> select * from zbbook;+---------------+------+---------+------------+-------+| zbSerial | name | content | lastTime | state |+---------------+------+---------+------------+-------+| ZB20090926001 | A1 | AAAA1 | 2009-09-26 | N1 |+---------------+------+---------+------------+-------+1 row in set (0.00 sec)mysql> insert into zbbook(name,content,lastTime,state) values('A2','AAAA2',CURDATE(),'N2');Query OK, 1 row affected (0.06 sec)mysql> select * from zbbook;+---------------+------+---------+------------+-------+| zbSerial | name | content | lastTime | state |+---------------+------+---------+------------+-------+| ZB20090926001 | A1 | AAAA1 | 2009-09-26 | N1 || ZB20090926002 | A2 | AAAA2 | 2009-09-26 | N2 |+---------------+------+---------+------------+-------+2 rows in set (0.00 sec)mysql> insert into zbbook(name,content,lastTime,state) values('A3','AAAA3',CURDATE(),'N3');Query OK, 1 row affected (0.03 sec)mysql> select * from zbbook;+---------------+------+---------+------------+-------+| zbSerial | name | content | lastTime | state |+---------------+------+---------+------------+-------+| ZB20090926001 | A1 | AAAA1 | 2009-09-26 | N1 || ZB20090926002 | A2 | AAAA2 | 2009-09-26 | N2 || ZB20090926003 | A3 | AAAA3 | 2009-09-26 | N3 |+---------------+------+---------+------------+-------+3 rows in set (0.00 sec)mysql> ACMAIN_CHM你好,where mid(zbSerial,3,8)=DATE_FORMAT(CURDATE(),'%Y%m%d')是什么意思啊,搞不懂? 你这种问法很难回答,因为不知道你是连 where 是什么意思都不了解,还是仅不了解 = 的作用,或者说函数。建议你贴出你自己的理解,然后让别人看一下对不对,或者指出你哪部分理解地不对。 函数部分,你可以参考一下官方文档。http://dev.mysql.com/doc/refman/5.1/zh/functions.html12. 函数和操作符12.1. 操作符12.1.1. 操作符优先级12.1.2. 圆括号12.1.3. 比较函数和操作符12.1.4. 逻辑操作符12.2. 控制流程函数12.3. 字符串函数12.3.1. 字符串比较函数12.4. 数值函数12.4.1. 算术操作符12.4.2. 数学函数12.5. 日期和时间函数12.6. MySQL使用什么日历?12.7. 全文搜索功能12.7.1. 布尔全文搜索12.7.2. 全文搜索带查询扩展12.7.3. 全文停止字12.7.4. 全文限定条件12.7.5. 微调MySQL全文搜索12.8. Cast函数和操作符12.9. 其他函数12.9.1. 位函数12.9.2. 加密函数12.9.3. 信息函数12.9.4. 其他函数 select IFNULL(max(right(zbSerial,3)),0) into n from zbbook where mid(zbSerial,3,8)=DATE_FORMAT(CURDATE(),'%Y%m%d');这句话是你写的,哈哈,我就截取了where后面的,不懂where后面的是什么意思,我试了,把where的部分去掉后(就是把where mid(zbSerial,3,8)=DATE_FORMAT(CURDATE(),'%Y%m%d')这句去掉)效果一样。 mysql同步能不能不那么敏感? 再次请教sql高手,这个站站查询的语句到底怎么写? PostgreSQL数据库复制 自动计算并插入值的问题 mysql重装出现1067错误,can't connect mysql on localhost(10061),以前的贴都不能解决 Win版的MySql怎么下载啊?我找到下载地点 问两个联合查询的sql语句 哪位兄才能够提供mysql正式版的下载地址啊,谢! 关于论坛的数据库! 如何定时将mysql中的一张表的数据导入到另一张表中? mysql 奇怪的错误 救命:系统重装了,表没有备份,现在该怎么恢复数据啊?
+----------------------------------------------+
| concat('ZB',replace(curdate(),'-',''),'001') |
+----------------------------------------------+
| ZB20090926001 |
+----------------------------------------------+
1 row in set (0.00 sec)
+-------------------------------------------+
| concat('ZB',replace(curdate(),'-',''),id) |
+-------------------------------------------+
| ZB20090926001 |
| ZB20090926002 |
| ZB20090926003 |
+-------------------------------------------+
3 rows in set (0.00 sec)mysql> select * from test;
+-----+
| id |
+-----+
| 001 |
| 002 |
| 003 |
+-----+
3 rows in set (0.00 sec)
(id) );
Query OK, 0 rows affected (0.16 sec)
Query OK, 0 rows affected (0.09 sec)mysql> delimiter |
mysql>
mysql> CREATE TRIGGER tr_zbbook_bi BEFORE INSERT ON zbbook
-> FOR EACH ROW BEGIN
-> declare n int;
-> select IFNULL(max(right(zbSerial,3)),0) into n from zbbook where mid(zbSerial,3,8)=DATE_FORMAT(CURDATE(),'%Y%m%d');
-> set NEW.zbSerial=concat('ZB',DATE_FORMAT(CURDATE(),'%Y%m%d'),right(1001+n,3));
-> END;
-> |
Query OK, 0 rows affected (0.03 sec)mysql>
mysql> delimiter ;
mysql> insert into zbbook(name,content,lastTime,state) values('A1','AAAA1',CURDATE(),'N1');
Query OK, 1 row affected (0.08 sec)mysql> select * from zbbook;
+---------------+------+---------+------------+-------+
| zbSerial | name | content | lastTime | state |
+---------------+------+---------+------------+-------+
| ZB20090926001 | A1 | AAAA1 | 2009-09-26 | N1 |
+---------------+------+---------+------------+-------+
1 row in set (0.00 sec)mysql> insert into zbbook(name,content,lastTime,state) values('A2','AAAA2',CURDATE(),'N2');
Query OK, 1 row affected (0.06 sec)mysql> select * from zbbook;
+---------------+------+---------+------------+-------+
| zbSerial | name | content | lastTime | state |
+---------------+------+---------+------------+-------+
| ZB20090926001 | A1 | AAAA1 | 2009-09-26 | N1 |
| ZB20090926002 | A2 | AAAA2 | 2009-09-26 | N2 |
+---------------+------+---------+------------+-------+
2 rows in set (0.00 sec)mysql> insert into zbbook(name,content,lastTime,state) values('A3','AAAA3',CURDATE(),'N3');
Query OK, 1 row affected (0.03 sec)mysql> select * from zbbook;
+---------------+------+---------+------------+-------+
| zbSerial | name | content | lastTime | state |
+---------------+------+---------+------------+-------+
| ZB20090926001 | A1 | AAAA1 | 2009-09-26 | N1 |
| ZB20090926002 | A2 | AAAA2 | 2009-09-26 | N2 |
| ZB20090926003 | A3 | AAAA3 | 2009-09-26 | N3 |
+---------------+------+---------+------------+-------+
3 rows in set (0.00 sec)mysql>
你这种问法很难回答,因为不知道你是连 where 是什么意思都不了解,还是仅不了解 = 的作用,或者说函数。建议你贴出你自己的理解,然后让别人看一下对不对,或者指出你哪部分理解地不对。 函数部分,你可以参考一下官方文档。http://dev.mysql.com/doc/refman/5.1/zh/functions.html
12. 函数和操作符
12.1. 操作符
12.1.1. 操作符优先级
12.1.2. 圆括号
12.1.3. 比较函数和操作符
12.1.4. 逻辑操作符
12.2. 控制流程函数
12.3. 字符串函数
12.3.1. 字符串比较函数
12.4. 数值函数
12.4.1. 算术操作符
12.4.2. 数学函数
12.5. 日期和时间函数
12.6. MySQL使用什么日历?
12.7. 全文搜索功能
12.7.1. 布尔全文搜索
12.7.2. 全文搜索带查询扩展
12.7.3. 全文停止字
12.7.4. 全文限定条件
12.7.5. 微调MySQL全文搜索
12.8. Cast函数和操作符
12.9. 其他函数
12.9.1. 位函数
12.9.2. 加密函数
12.9.3. 信息函数
12.9.4. 其他函数
这句话是你写的,哈哈,我就截取了where后面的,不懂where后面的是什么意思,我试了,把where的部分去掉后(就是把where mid(zbSerial,3,8)=DATE_FORMAT(CURDATE(),'%Y%m%d')这句去掉)效果一样。