澳门威利斯人_威利斯人娱乐「手机版」

来自 办公软件 2019-07-20 16:43 的文章
当前位置: 澳门威利斯人 > 办公软件 > 正文

威尼斯人博彩下mysql通过存储过程实现批量生成记

接纳存储进度,在操作数据库时张开事务,制止并发时同期操作导致数据再次

Linux 下mysql通过存款和储蓄进度实现批量变通记录

最近几年有个特意变态的作业供给,有一张表

威尼斯人博彩 1

在支付中有二个这么的需求:供给在数据库的表中生成大量的笔录,那些记录唯有非常少的反差,只会在创设表的时候进行贰次这么些操作。当然,假诺人工一条一条的做亦不是不可以,也足以用外表的程序来完结,可是这里作者采纳使用mysql的蕴藏进程来贯彻。

CREATE TABLE `demo` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `tid` int(11) DEFAULT '0',
 `pid` int(11) DEFAULT '1',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3000124 DEFAULT CHARSET=utf8;
CREATE DEFINER=`root`@`localhost` PROCEDURE `GetSerialNo`(IN tsCode VARCHAR(50),OUT result VARCHAR(200) )
BEGIN 
 DECLARE tsValue VARCHAR(50); 
 DECLARE tdToday VARCHAR(20);  
 DECLARE nowdate VARCHAR(20);  
 DECLARE tsQZ  VARCHAR(50); 
 DECLARE t_error INTEGER DEFAULT 0; 
 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; 
 START TRANSACTION; 
  /* UPDATE sys_sno SET sValue=sValue WHERE sCode=tsCode; */
  SELECT sValue INTO tsValue FROM sys_sno WHERE sCode=tsCode; 
  SELECT sQz INTO tsQZ FROM sys_sno WHERE sCode=tsCode ; 
 -- 因子表中没有记录,插入初始值  
  IF tsValue IS NULL THEN 
   SELECT CONCAT(DATE_FORMAT(NOW(),'%y%m'),'0001') INTO tsValue; 
   UPDATE sys_sno SET sValue=tsValue WHERE sCode=tsCode ; 
   SELECT CONCAT(tsQZ,tsValue) INTO result; 
  ELSE     
   SELECT SUBSTRING(tsValue,1,4) INTO tdToday; 
   SELECT CONVERT(DATE_FORMAT(NOW(),'%y%m'),SIGNED) INTO nowdate;
   -- 判断年月是否需要更新
   IF tdToday = nowdate THEN 
    SET tsValue=CONVERT(tsValue,SIGNED)   1; 
   ELSE 
    SELECT CONCAT(DATE_FORMAT(NOW(),'%y%m') ,'0001') INTO tsValue ; 
   END IF; 
   UPDATE sys_sno SET sValue =tsValue WHERE sCode=tsCode; 
   SELECT CONCAT(tsQZ,tsValue) INTO result; 
  END IF; 
  IF t_error =1 THEN 
  ROLLBACK; 
  SET result = 'Error'; 
  ELSE 
  COMMIT; 
  END IF; 
  SELECT result ;  
END;
dao
Integer getFaultNo(Map<String, String> parameterMap);

0、相关版本新闻

粗粗就是这么,有300多万行记录,每种pid记录的那一个ID的最超级分类,tid是它的顶头上司分类!
现行反革命供给是:通过点名三个ID,查寻觅它的兼具子集成员,并修改那个pid的值为新钦点的值!!
在PHP中跑了一晃,奉行时间大致必要50秒 ,万分悲苦!!!
亟待递归寻觅全体子集,修改它的pid,职业量照旧蛮大的。

xml

        mysql使用官方打包发表的5.6.29版本,安装在linux上

而oracle中有四个措施是connect_by_isleaf,能够很有益于的寻觅具有子集,但笔者是MySQL......

<update id="getFaultNo" parameterMap="getFaultMap" statementType="CALLABLE">
  CALL GetSerialNo(?,?)
 </update>
 <!--
  parameterMap.put("tsCode", 0);
  parameterMap.put("result", -1);
  -->
 <parameterMap type="java.util.Map" id="getFaultMap">
  <parameter property="tsCode" mode="IN" jdbcType="VARCHAR"/>
  <parameter property="result" mode="OUT" jdbcType="VARCHAR"/>
 </parameterMap>

1、数据表结构

所以用这儿简单的写写用MySQL的法子或存款和储蓄进度达成的阅历

调用

        表有三个自增的主键,其他有四个字段是急需保留的有半点距离的音讯,其他有三个字段是别的音讯,创造表的代码:

第一种:MySQL的方法

本文由澳门威利斯人发布于办公软件,转载请注明出处:威尼斯人博彩下mysql通过存储过程实现批量生成记

关键词: 澳门威利斯人