sql可重复执行专题

本文由许瑜钊分享,探讨了SQL重复执行时的处理方法。重点包括:使用`ignore`关键字避免插入重复数据、在创建存储过程时注意分隔符的重定义以及执行后删除存储过程以减少冗余。内容涵盖了新建字段、索引、存储过程、数据插入及表创建等方面。
摘要由CSDN通过智能技术生成

作者:许瑜钊


模板   日期-标识-数据库名称.sql

关注点:

1.插入重复  直接在原insert 语句后面加 ignore关键字,该方式必须表有主键或者唯一索引

2.新增字段、新加索引,新建存储过程,查系统表,需要特别注意的是,新建存储过程这的脚本需要重定义分隔符,因为存储过程的创建是多条语句的,而mysql默认的分隔符是分号,如果不重新定义分隔符,会出现语法问题,另外,创建完存储过程需要恢复分隔符

3.存储过程创建,执行完就删除,以避免冗余

1.新建字段

新增字段
--    创建一个存储过程判断字段是否存在
drop  PROCEDURE  if EXISTS add_column;
DELIMITER ;;
create  PROCEDURE  add_column()
BEGIN
     -- TABLE_SCHEMA 数据库名
     -- table_name 表名
     -- COLUMN_NAME 列名
     if  not  EXISTS( select  FROM  information_schema.COLUMNS  WHERE  TABLE_SCHEMA= 'cims_db'  AND  table_name= 'on_shelf'  AND  COLUMN_NAME= 'status_type' then
         -- 要执行的字段新增
         ALTER  TABLE  `cims_db`.`on_shelf`  
             ADD  COLUMN  `status_type`  VARCHAR (50)  DEFAULT  '0'   NULL    COMMENT  '状态类型'  AFTER  `status`;
     ELSE
         select  'exist' ;
     end  if;
end
;;
DELIMITER ;
CALL add_column();
--   结束存储过程创建
 
 
-- 简化版
-- 表名,列名,数据类型,备注
-- 注意:表名不可待数据库前缀
call add_column_proc( 'brand' , 'test1' , 'varchar(10)' , '测试' );

2.新建索引

新建索引
DROP  PROCEDURE  IF EXISTS index_add; 
DELIMITER ;;
CREATE  PROCEDURE  index_add()
  BEGIN
DECLARE   CurrentDatabase  VARCHAR (100);
SELECT  DATABASE ()  INTO  CurrentDatabase;
IF  NOT  EXISTS ( SELECT  FROM  information_schema. statistics  WHERE  table_schema=CurrentDatabase  AND  table_name =  'oms_orderdetail'  AND  index_name =  'index_sku_code_query' THEN 
    ALTER  TABLE  `order_db`.`oms_orderdetail`  
     ADD   INDEX  `index_sku_code_query` (`sku_code`);
else
     select  'exist' ;
END  IF; 
END ;;
DELIMITER ; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值