postgresql 数据库 alter table alter column set default 的一些实践
os: centos 7.4
db: postgresql 10.11
创建表后,有时需要对表进行 set default 或者 drop default 设置。
版本
# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)
#
# su - postgres
$
$ psql -c "select version();"version
----------------------------------------------------------------------------------------------------------PostgreSQL 10.11 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
(1 row)
create table
$ psql
psql (10.11)
Type "help" for help.postgres=# \timing on
Timing is on.
postgres=#
postgres=# drop table if exists tmp_t4;
DROP TABLE
Time: 313.287 mspostgres=# create table tmp_t4(
id int8,
name varchar(100),
memo1 varchar(100),
memo2 varchar(100)
);
CREATE TABLE
Time: 360.530 mspostgres=# insert into tmp_t4
select id,md5(id::varchar),md5(id::varchar),null from generate_series(1,10000000) as id;INSERT 0 10000000
Time: 58346.187 ms (00:58.346)postgres=# select * from tmp_t4 limit 5;id | name | memo1 | memo2
----+----------------------------------+----------------------------------+-------1 | c4ca4238a0b923820dcc509a6f75849b | c4ca4238a0b923820dcc509a6f75849b | 2 | c81e728d9d4c2f636f067f89cc14862c | c81e728d9d4c2f636f067f89cc14862c | 3 | eccbc87e4b5ce2fe28308fd9f2a7baf3 | eccbc87e4b5ce2fe28308fd9f2a7baf3 | 4 | a87ff679a2f3e71d9181a67b7542122c | a87ff679a2f3e71d9181a67b7542122c | 5 | e4da3b7fbbce2345d7772b0674a318d5 | e4da3b7fbbce2345d7772b0674a318d5 |
(5 rows)Time: 0.796 mspostgres=# \d+ tmp_t4Table "public.tmp_t4"Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+------------------------+-----------+----------+---------+----------+--------------+-------------id | bigint | | | | plain | | name | character varying(100) | | | | extended | | memo1 | character varying(100) | | | | extended | | memo2 | character varying(100) | | | | extended | | postgres=# select oid,relname,relfilenode,relkind,relfrozenxid
from pg_class pc where pc.relname='tmp_t4';oid | relname | relfilenode | relkind | relfrozenxid
--------+---------+-------------+---------+--------------123886 | tmp_t4 | 123886 | r | 406624
(1 row)Time: 0.579 ms
alter column set default
对列中不含null进行 set default 设置
postgres=# alter table tmp_t4 alter column memo1 set default 'aaa';
ALTER TABLE
Time: 1129.620 ms (00:01.130)postgres=# \d+ tmp_t4Table "public.tmp_t4"Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+------------------------+-----------+----------+--------------------------+----------+--------------+-------------id | bigint | | | | plain | | name | character varying(100) | | | | extended | | memo1 | character varying(100) | | | 'aaa'::character varying | extended | | memo2 | character varying(100) | | | | extended | | postgres=# select oid,relname,relfilenode,relkind,relfrozenxid
from pg_class pc where pc.relname='tmp_t4';oid | relname | relfilenode | relkind | relfrozenxid
--------+---------+-------------+---------+--------------123886 | tmp_t4 | 123886 | r | 406624
(1 row)Time: 0.443 ms
对列中含null进行 default 设置
postgres=# alter table tmp_t4 alter column memo2 set default 'aaa';
ALTER TABLE
Time: 128.971 ms
alter column drop default
postgres=# \d+ tmp_t4Table "public.tmp_t4"Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+------------------------+-----------+----------+--------------------------+----------+--------------+-------------id | bigint | | | | plain | | name | character varying(100) | | | | extended | | memo1 | character varying(100) | | | 'aaa'::character varying | extended | | memo2 | character varying(100) | | | 'aaa'::character varying | extended | |
postgres=# alter table tmp_t4 alter column memo1 drop default;
ALTER TABLE
Time: 36.544 ms
postgres=# alter table tmp_t4 alter column memo2 drop default;
ALTER TABLE
Time: 59.798 ms
add column set default
postgres=# alter table tmp_t4 add column memo3 varchar(100) default 'aaa';
ALTER TABLE
Time: 73482.788 ms (01:13.483)postgres=# select * from tmp_t4 limit 5;id | name | memo1 | memo2 | memo3
----+----------------------------------+----------------------------------+-------+-------1 | c4ca4238a0b923820dcc509a6f75849b | c4ca4238a0b923820dcc509a6f75849b | | aaa2 | c81e728d9d4c2f636f067f89cc14862c | c81e728d9d4c2f636f067f89cc14862c | | aaa3 | eccbc87e4b5ce2fe28308fd9f2a7baf3 | eccbc87e4b5ce2fe28308fd9f2a7baf3 | | aaa4 | a87ff679a2f3e71d9181a67b7542122c | a87ff679a2f3e71d9181a67b7542122c | | aaa5 | e4da3b7fbbce2345d7772b0674a318d5 | e4da3b7fbbce2345d7772b0674a318d5 | | aaa
(5 rows)Time: 0.619 mspostgres=# select oid,relname,relfilenode,relkind,relfrozenxid
from pg_class pc where pc.relname='tmp_t4';oid | relname | relfilenode | relkind | relfrozenxid
--------+---------+-------------+---------+--------------123886 | tmp_t4 | 123894 | r | 406631
(1 row)Time: 0.834 ms
relfilenode 由之前 123886 变为 123894
add column set default 确实要慎重
参考:
http://postgres.cn/docs/10/sql-altertable.html
postgresql 数据库 alter table alter column set default 的一些实践相关推荐
- v$lock之alter table drop column与alter table set unused column区别系列五
背景 之前文章: http://blog.itpub.net/9240380/viewspace-1814709/,涉及过如何删除表的某列,本文我们讨论下不同的删除表列语法参数,持锁模式的不同,便 ...
- MySQL 新增字段(alter table add column),报错:Duplicate entry
问题 执行一个增加字段的DDL语句脚本时,报错,错误如下: Error 1062: Duplicate entry 'c51d3db8-59a5 2022-06-28 17:59:59' for ke ...
- postgresql 数据库 alter table alter column set not null 的一些实践
os: centos 7.4 db: postgresql 10.11 创建表后,有时需要对表进行 set not null 或者 drop not null 设置. 版本 # cat /etc/ce ...
- alter table add column多个字段_SQL对表中字段的操作 alter
ALTER TABLE 语句用于在现有表中添加.删除或修改列. 注意不同的数据库的语句有所不一样 增加和删除都基本一致. 进行修改表中字段的时候注意: 本文主要介绍 sqlserver/mysql/o ...
- oracle drop column 多个,3000W记录,alter table drop column很慢
最初由 yzm2008 发布 [B]Alter table T set unused(COLUMN) 和 drop column有什么区别吗? [/B] SET UNUSED Clause Speci ...
- alter table add column多个字段_ElementUI表格el-table表头固定自适应高度解决方案
一.前言 ElementUI.iView都以相同的方式提供了表格组件表头固定的方法,即设置组件的height属性.表头固定很重要,就在于当表格数据项很多时,滚动条出现在表格组件内,而不是出现在表格组件 ...
- alter table add column多个字段_利用Python将多个excel合并到一个文件中
数据岗位的小伙伴可能经常会遇到这样一个问题:多个来源返回的数据怎么整合到一个文件中?手动经常会出错,下面介绍一种利用Python处理的方式: 前期准备: 1.多个excel需要进行数据整理,保证文件的 ...
- alter table add column多个字段_WordPress 在文章列表快速编辑中编辑自定义字段
在快速编辑中添加自定义字段,通常我们不需要在 WordPress 后台文章列表的"快速编辑"菜单中进行更改,但有的时候如果可以把常用的设置添加到"快速编辑"菜单 ...
- sql server 使用drop column 列名 删除列时报错,由于一个或多个对象访问此 列,ALTER TABLE DROP COLUMN stu_cou_num 失败
删除没有任何其他引用的列时,出现了错误 仔细看了下这个列,并没有什么特殊.如下图: 但其确实有个约束: 'DF__HIS_DRUG___ALL_I__04E4BC85' . 为什么有这个约束呢??? ...
最新文章
- Git学习总结(一)
- Numpy统计计算、数组比较,看这篇就够了
- 人工智能先驱 Nils Nilsson 去世,吴恩达、Yann LeCun 悼念
- 深度linux系统gho,深度技术ghost版的win7操作系统下载
- 2019 Flutter 心愿单
- 青州市2021年高考成绩查询,2021年青州市高考状元名单资料,今年青州市高考状元多少分...
- SQL重复记录处理(查找,过滤,删除)
- Why Service Mesh
- vue使用prevent修饰符阻止标签的默认行为
- SQLServer实现快速进行简繁体的翻译功能
- IndexError: index 0 is out of bounds for axis 0 with size 0
- 如何笔记本盖上连接显示器不熄屏?
- 使用@JsonFormat注解 后端往前端页面展示日期为英文问题 (例如:Thu Dec 09 00:00:00 CST 2021)
- VMWare Workstation、GSX Server、ESX Server的区别?
- 常用的三种白平衡算法整理
- 如何防止网站快照被劫持收录攻击
- 7天内完成基础USB开发(3)——硬件平台介绍及开发要点
- 【语音识别】基于DTW算法实现0~9数字和汉字语音识别含Matlab源码
- java+selenium的入门 案例 selenium包 谷歌驱动包 火狐驱动包 IE驱动包 (一)
- 利用poi将Html中table转为Excel
热门文章
- Docker化Node.js网络应用
- 点晴信息技术告诉您点晴OA是如何做出色的免费OA系统
- centos 日志审计_CentOS7下安全审计工具Auditd的简单使用
- 【职场进阶】入职没有几天就离职是什么心态?
- Joint Discriminative and Generative Learning for Person Re-identification 论文翻译
- echarts 中国地图飞机实现demo 中国地图路线飞行 echarts飞行
- 程序员35岁危机是一个善意的谎言,保持危机感但不用惊恐
- 中国分电器及点火线圈市场现状研究分析与发展前景预测报告(2022)
- 牧牛商学院,区块链技术在会计领域的应用
- 米兔机器人魔方_米兔卡片学习机首晒