mysql alter table if exists_如果MySQL中存在列,则使用ALTER删除列_老衲不生气的博客-程序员宅基地

技术标签: mysql alter table if exists  

sp00m..

12

我刚刚建立了一个可重用的程序,可以帮助制作DROP COLUMN幂等法:

-- column_exists:

DROP FUNCTION IF EXISTS column_exists;

DELIMITER $$

CREATE FUNCTION column_exists(

tname VARCHAR(64),

cname VARCHAR(64)

)

RETURNS BOOLEAN

READS SQL DATA

BEGIN

RETURN 0 < (SELECT COUNT(*)

FROM `INFORMATION_SCHEMA`.`COLUMNS`

WHERE `TABLE_SCHEMA` = SCHEMA()

AND `TABLE_NAME` = tname

AND `COLUMN_NAME` = cname);

END $$

DELIMITER ;

-- drop_column_if_exists:

DROP PROCEDURE IF EXISTS drop_column_if_exists;

DELIMITER $$

CREATE PROCEDURE drop_column_if_exists(

tname VARCHAR(64),

cname VARCHAR(64)

)

BEGIN

IF column_exists(tname, cname)

THEN

SET @drop_column_if_exists = CONCAT('ALTER TABLE `', tname, '` DROP COLUMN `', cname, '`');

PREPARE drop_query FROM @drop_column_if_exists;

EXECUTE drop_query;

END IF;

END $$

DELIMITER ;

用法:

CALL drop_column_if_exists('my_table', 'my_column');

例:

SELECT column_exists('my_table', 'my_column'); -- 1

CALL drop_column_if_exists('my_table', 'my_column'); -- success

SELECT column_exists('my_table', 'my_column'); -- 0

CALL drop_column_if_exists('my_table', 'my_column'); -- success

SELECT column_exists('my_table', 'my_column'); -- 0

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30174223/article/details/113345475

智能推荐

java+下载大文件+hc_用Java实现FTP批量大文件上传下载(六)--代码及示例下载_weixin_39699163的博客-程序员宅基地

评论共2页:上一页12评论#re: 用Java实现FTP批量大文件上传下载(六)--代码及示例下载回复更多评论2007-10-23 09:32 by sl学习,多谢共享。#re: 用Java实现FTP批量大文件上传下载(六)--代码及示例下载回复更多评论2007-10-23 12:01 by sl下载的例子,用浏览打开sample.html时,显示不出Applet(JDK...

第二篇:在MVPArms项目使用了androidx和butterknife报错_莫闲的博客-程序员宅基地

如果你的项目中使用了androidx报错,报错如下:The given artifact contains a string literal with a package reference 'android.support.v4.content' that cannot be safely rewritten. Libraries using reflection such as annot...

【百战GAN】GAN也可以拿来做图像分割,看起来效果还不错?_言有三的博客-程序员宅基地

大家好,欢迎来到专栏《百战GAN》,在这个专栏里,我们会进行算法的核心思想讲解,代码的详解,模型的训练和测试等内容。作者&amp;编辑 | 言有三本文资...

jungle roads|POJ 1251(最小生成树)(kruskal)_SadSummerHoliday的博客-程序员宅基地

Jungle RoadsTime Limit:1000MS Memory Limit:10000K Total Submissions:38849 Accepted:18287 DescriptionThe Head Elder of the tropical island of Lagrishan has a problem. A b...

maven 常用插件_vhicool的博客-程序员宅基地

maven-shade-plugin将依赖的jar包打包到当前jar包(常规打包是不会将所依赖jar包打进来的);对依赖的jar包进行重命名(用于类的隔离);&lt;plugin&gt; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactId&gt;maven-shade-plugin&lt;/artifactId&gt; &lt;executions&gt; &lt;

Ogre wiki 中级教程1 动画,点之间行走及四元数的基本应用_lyuharvey的博客-程序员宅基地

引言在本教程中,我们将介绍如何让一个实体以动画的方式在预先定义的点之间行走。此外还将通过展示一个如何让实体朝向它所移动的方向的例子来讲解四元数的基本应用。在创作这个demo的过程中你将慢慢把代码添加到项目中,编译并观看结果。Prerequisites (略)Getting Started (略)创建场景开始之前,请注意我们在头文件定义了三个变量。mEntity将保存我们创建的实体,mNode将保存...

随便推点

[中文翻译] Android中文翻译组:Android 4.0 r1开发者指南——Data Storage - Data Backup_kernel的博客-程序员宅基地

原文         http://developer.android.com/guide/topics/data/backup.html快速查看·      将用户数据备份到云中心以防丢失。·      如果用户升级到运行Android的新设备,程序可以恢复用户数据到新设备中。·      可方便地用BackupAgentHelper备份SharedPreference和

ubuntu 文件系统_jubao_liang的博客-程序员宅基地

1 ubuntu 文件系统 根目录部分有以下子目录: /usr 目录包含所有的命令、程序库、文档和其它文件。这些文件在正常操作中不会被改变的。这个目录也包含你的Linux发行版本的主要的应用程序,譬如,Netscap

springcloud 小结【持续更新】_别清兵你会死的博客-程序员宅基地

// 最近在学习springcloud的一套服务,想用自己的话总结一波。使用的技术栈是:服务注册:eureka --&gt; zookeeper、consul、nacos负载均衡:ribbon/feign --&gt; ribbon、loadBalancer/openFeign服务熔断,服务降级:hystrix --&gt; resilience4j、sentien

Java中的XML读取_萌新白给的博客-程序员宅基地

XML的作用-不同软件间的数据传输 -不同系统间的数据传输 -不同平台间的数据共享XML四种解析方式-DOM解析 -SAX解析 -DOM4J解析 -JDOM解析 -DOM解析与SAX解析不需要额外的jar,是Java官方的解析方式。 -解析遇到乱码时可以修改xml中编码方式,或者对InputStream流进行InputStreamReader包装并指定编码方式。常用XML节点类型

bootice添加linux_如何使用老毛桃winpe的Bootice工具新建实模式启动项(Grub/Linux)?_weixin_39927993的博客-程序员宅基地

说到实模式启动项(Grub/Linux),很多朋友都不知道怎么去创建。其实,在我们的电脑一般都会有一个常用独立于固件的启动选项接口,它储存系统启动配置数据,也就是BCD文件。我们可以通过BCD文件来新建实模式启动项。下面就来看看如何使用老毛桃winpe的Bootice工具新建实模式启动项(Grub/Linux)!1、 在官网下载老毛桃U盘winpe制作工具,制作一个U盘winpe启动盘2、 制作完...

中年大叔~手把手教你如何绘制一辆会跑车_weixin_34294649的博客-程序员宅基地

2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...