flyway R__开头的sql在每次部署时会执行一次
例如:R__UPDATE_20200909.sql

0 判断

-- 0.1 判断列是否存在
IF (select count(*) from information_schema.columns where table_name = '表名' and  column_name  = '列名') = 0
THEN...
END IF;-- 0.2 判断列类型
IF (select data_type from information_schema.columns where table_name = '表名' and  column_name  = '列名') = '类型'
THEN...
END IF;

1 新增列

-- 列不存在时新增
ALTER TABLE 表名 ADD COLUMN IF NOT EXISTS 列名 类型;-- 示例
ALTER TABLE record ADD COLUMN IF NOT EXISTS age int2;

2 判断并修改列类型,这里是int2改为int4。同类型扩展可以改,其他类型转换会报错。

DO
$do$
BEGINIF (select data_type from information_schema.columns where table_name = 'record' and  column_name  = 'age') = 'smallint'THENALTER TABLE record ALTER age TYPE int4;END IF;
END
$do$
;

3 创建索引

-- 索引不存在时新增
CREATE INDEX IF NOT EXISTS 索引名 ON 表名(索引字段...);
CREATE INDEX IF NOT EXISTS 索引名 ON 表名 USING btree (索引字段...);-- 示例,name和age的组合索引
CREATE INDEX IF NOT EXISTS idx_name_sex ON record(name, age);
CREATE INDEX IF NOT EXISTS idx_name_sex ON record USING btree (name, age);

4 创建表

-- 表不存在时创建
CREATE TABLE IF NOT EXISTS "record" ("name" varchar(25) NOT NULL,"age" int2 NOT NULL
);
COMMENT ON COLUMN "record"."name" IS "姓名";

5 删除列

-- 列存在时删除
ALTER TABLE 表名 DROP COLUMN IF EXISTS 列名;-- 示例
ALTER TABLE record  DROP COLUMN IF EXISTS age;

6 改列名

DO
$do$
BEGINIF (select count(*) from information_schema.columns where table_name = 'record' and  column_name  = 'name') = 0THEN-- ALTER TABLE 表名 RENAME 原名称 TO 新名称;ALTER TABLE record RENAME name TO new_name;END IF;
END
$do$
;

7 修改为非必填

ALTER TABLE 表名 ALTER 列名 DROP NOT NULL;-- 示例
ALTER TABLE record ALTER name DROP NOT NULL;

【Flyway】pgsql R__开头的sql相关推荐

  1. 【SQL管理】-Flyway数据库版本管理利器从入门到入味

    Flyway是什么? Flyway是独立于数据库的应用.管理并跟踪数据库变更的数据库版本管理工具.用通俗的讲,Flyway可以像Git管理不同人的代码那样,管理不同人的sql脚本,整个过程自动化,可回 ...

  2. SpringBoot整合Flyway

    目录 介绍: 工作原理 项目创建 pom依赖 application.properties sql文件 sql文件命名规则 FlywayDemoApplication启动类 结果 验证R开头的sql ...

  3. flyway配置mysql_Flyway快速上手教程

    一.Flyway是什么 官网解释地非常全面,可先大致阅读一下. 简单地说,flyway是一个能对数据库变更做版本控制的工具. 二.为什么要用Flyway 在多人开发的项目中,我们都习惯了使用SVN或者 ...

  4. 游戏数据库版本更新神器Flyway

    游戏数据库版本更新神器Flyway 网易游戏基础架构平台 游戏热爱者 Ychun 网易游戏高级运维工程师,负责多个游戏产品的运维工作:关注自动化.容器.业务全链路监控等领域 背景介绍 本文开始之前,总 ...

  5. Flyway简介及使用

    Flyway简介及使用 1.简介 1.1 Flyway是什么? Flyway是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式. Flyway可以独立于应用实现管理并跟踪数据库变更,支持数据 ...

  6. Flyway 入门教程

    目录 一.简单介绍 二.Flyway使用场景 三.Flyway工作原理 四.Flyway如何校验文件 五.使用Flyway 5.1 引入依赖 5.2 添加配置 5.2.1 SpringBoot配置 5 ...

  7. Spring Boot中使用Flyway来管理数据库版本

    久违了的Spring Boot系列,今天抽空更新一篇.之前写过很多篇关于数据访问的文章了,比如下面这些: 使用JdbcTemplate 使用Spring-data-jpa简化数据访问层(推荐) 多数据 ...

  8. SQL Server 2005 学习笔记之触发器简介[转]

    触发器实际上就是一种特殊类型的存储过程,其特殊性表现在:它是在执行某些特定的T-SQL语句时自动的. 11.1  触发器简介 触发器实际上就是一种特殊类型的存储过程,它是在执行某些特定的T-SQL语句 ...

  9. 面试官:说说一条查询SQL的执行过程?

    为了理解这个问题,先从Mysql的架构说起,对于Mysql来说,大致可以分为3层架构. 第一层作为客户端和服务端的连接,连接器负责处理和客户端的连接,还有一些权限认证之类.比如客户端通用用户名密码连接 ...

最新文章

  1. 视频专辑:Photoshop基础视频教程
  2. SQL查询分析器使用
  3. 左右HttpClient上传的方法来解决中国的乱码
  4. activity 启动模式_Intent#FLAG_ACTIVITY_CLEAR_TOP 真的会 clear top 吗
  5. 软饮赛道竞争正酣,农夫山泉跨界遭遇“拦路虎”?
  6. RoBERTa中文预训练模型:RoBERTa for Chinese
  7. 快速搭建Nextcloud+OnlyOffice私有云办公平台
  8. 《Qt基础教程之Qt学习之路》
  9. java-RGB与十六进制的互相转换
  10. Scan Context 学习记录
  11. eNSP创建局域网vlan隔离
  12. Oracle (08)JDBC
  13. 输入法不见了,咋办?输入法不能开机启动咋办?
  14. uni-app开发微信小程序使用微信小程序的插件
  15. 面试官:Java8 lambda 表达式 forEach 如何提前终止?
  16. AI 开发者被疯抢,华为做了什么?
  17. JavaScript基础——滚动事件、加载事件、三大家族
  18. kubernetes资源--secret和ServiceAccount
  19. 『Origin』软件如何切换中英文界面?
  20. 虚拟机网络的拓扑结构

热门文章

  1. CRM系统部署模式有哪些
  2. python开发的录音机(二)让鼠标点击与开始录音同步(录制与回放鼠标宏)
  3. JA-awd-sqlgunnews新闻管理系统
  4. 洛谷 P1008 三连击
  5. LOB类型的学习、总结
  6. 有一个类似”abbc,d d.eeffgg,59.30ABDFR ”这样的包含大小写字母,数字,空格,逗号和句号的字符串,求各字符的数量。(设计一个一个函数,传入字符串,返回各字符数量的数据)
  7. virtualBox安装centos6增强包报错解决及配置共享文件夹
  8. 阿里云大数据组件选型
  9. oracle配置话清单,oracle 几个常用话语
  10. srs linux开机启动,SRS之安装与使用