2019独角兽企业重金招聘Python工程师标准>>>

1、问题引出

为了保证数据的正确性,代码的健壮性,我们必须对一些边界条件做一个判断,所以才会把修改表结构搞得如此复杂。

mysql 新增字段时判断字段是否存在,本来是一个很小的问题,因为以前都是使用 postgreSql、sqlserver ,上来就 if not exist ,结果mysql并不吃这一套,看看这段代码:

 IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't_subject' AND COLUMN_NAME = 'subject_status')THEN ALTER TABLE t_subject ADD COLUMN `subject_status` int(1) DEFAULT '0' COMMENT '0:未被引用;1:已被用';END IF;

在 navicat执行时总出现错误,纳闷啊............................

2、问题分析

网上查了很多,发现不能这样直接执行脚本,那就没办法了,变态的写法就是直接定义存储过程,然后执行存储过程,最后删除存储过程,看到这你是不是想呵呵了,无论怎样,这最终是一种解决方法

3、问题解决

// 创建存储过程 名称定义 以temp开头意为临时的,Alter_Table_T_Subject 意为修改T_Subject,20160411 意为存储过程创建的日期

CREATE PROCEDURE Temp_Alter_Table_T_Subject_20160411()BEGINIF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't_subject' AND COLUMN_NAME = 'subject_status')THEN ALTER TABLE t_subject ADD COLUMN `subject_status` int(1) DEFAULT '0' COMMENT '0:未引用;1:已被用';END IF;END

// 调用存储过程

CALL Temp_Alter_Table_T_Subject_20160411()

// 删除存储过程

DROP PROCEDURE Temp_Alter_Table_T_Subject_20160411;

4、真诚希望

希望有更好的方式,否则这个太变态了,我是不是还要写一个函数,来判断这个存储过程是否已经存在了,我去太复杂了,真诚希望有更好的方式,可以留言!

转载于:https://my.oschina.net/heweipo/blog/651548

mysql 新增字段时判断字段是否存在相关推荐

  1. mysql判断字段是否存在不存在添加字段_mysql 新增字段时判断字段是否存在

    1.问题引出 为了保证数据的正确性,代码的健壮性,我们必须对一些边界条件做一个判断,所以才会把修改表结构搞得如此复杂. mysql 新增字段时判断字段是否存在,本来是一个很小的问题,因为以前都是使用 ...

  2. mysql 字段判断是否存在_mysql 新增字段时判断字段是否存在

    1.问题引出 为了保证数据的正确性,代码的健壮性,我们必须对一些边界条件做一个判断,所以才会把修改表结构搞得如此复杂. mysql 新增字段时判断字段是否存在,本来是一个很小的问题,因为以前都是使用 ...

  3. mysql判断空_MySQL判断字段是否为null

    不能用 '!=','=','<>' 来判断,虽然不会报错,但是并不会得到想要的结果. 正确方法:使用 is not null 或 is null 此外, null 值和 ' ' 是有区别的 ...

  4. mysql新增、修改表字段

    一.新增字段 说明:以下语句关键字COLUMN,都可以省略,"ACT_AAA"是表名 格式 ALTER TABLE 表名 ADD COLUMN 字段名称 字段类型(字段长短-选填) ...

  5. mysql如何判断是否有这个字段_判断字段是否是纯数字

    一.准备数据 -- 创建表 create table if not exists tmp_data_20201210 (data string comment '测试数据' ); -- 查看创建完的表 ...

  6. 修改mysql 视图字段类型_记一次mysql视图创建时自定义字段类型不同环境不同的原因...

    由于老项目使用的是hibernate,当项目启动时会去检查数据库字段类型等,发现一张视图中某个自定义字段在开发环境中类型为text,但是到了生产环境类型却为mediumtext,导致代码在生产上会有问 ...

  7. 用Sql添加删除字段,判断字段是否存在的方法

    增加字段 alter table docdsp  add dspcode char(200) 删除字段 ALTER TABLE table_NAME DROP COLUMN column_NAME 修 ...

  8. Oracle删除字段之前判断字段是否存在

    在Oracle中若删除表中一个不存在的字段,如 "alter table test drop column xxx",则会提示: ORA-00904:"xxx" ...

  9. sql server 获取字符串长度, 判断字符串长度,获取字段长度, 判断字段长度

    简单查询 select DATALENGTH('66666') 返回结果:5 数据查询判断 select Count(userid) from UserInfo where DATALENGTH(us ...

  10. mysql创建表的时候日期给个默认值_mysql 创建表时 日期字段默认值为当前时间...

    mysql 创建表时 日期字段默认值为当前时间 mysql version 5.1 在mysql创建表的时候经常会遇到创建日期字段需要设置当前时间为默认值的时候,就如sqlserver2000一样,把 ...

最新文章

  1. 提高网站访问速度的34条军规(2)
  2. 为什么做软件类项目,会出现人多,事少,工作量大的情况?
  3. 验证VSPHERE5 支持大于2TB磁盘
  4. Java String startsWith()方法与示例
  5. SAP License:成本收集器两则
  6. ONAP如何将Open-O和ECOMP数百万行代码合并?
  7. 读书笔记∣世界是数字的
  8. Python While 循环语句
  9. 培训linux好吗,参加linux专业培训好还是自学linux好
  10. 软件测试方法——静态测试与动态测试
  11. 德州扑克算法幕后研发者CMU博士Brown专访:AI如何打败顶级人类牌手?
  12. vscode中配置LeetCode插件的教程(愉快刷题)
  13. 奶爸日记-沉迷看小猪
  14. 3. ESP8266开发板自动连接室内Wi-Fi
  15. Selenium-淘宝登录
  16. 大数据分析-第二章 大数据平台
  17. java wed高德地图开发_java接入高德地图常用WEB API
  18. 直击平昌! 2天40位大咖的平昌区块链论坛精华都在这了!
  19. 纯css制作圆形进度条
  20. 海上钢琴家 与程序员

热门文章

  1. shell脚本编写笔记
  2. 【机器学习系列】隐马尔科夫模型第一讲:通俗易懂概述HMM
  3. NoSQLAttack针对 mongoDB 的攻击工具
  4. Codeforce 1800Difficulty Graphs 20 questions
  5. 云服务器操作系统新手,云服务器操作系统新手
  6. EHIGH恒高:大话UWB技术之蓝牙定位的烦恼
  7. 常见的java设计模式
  8. IdentityServer4 中文文档与实战
  9. python 删除大表数据
  10. 【转】基于nginx + lua实现的反向代理动态更新