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 的一些实践相关推荐

  1. v$lock之alter table drop column与alter table set unused column区别系列五

    背景 之前文章:   http://blog.itpub.net/9240380/viewspace-1814709/,涉及过如何删除表的某列,本文我们讨论下不同的删除表列语法参数,持锁模式的不同,便 ...

  2. MySQL 新增字段(alter table add column),报错:Duplicate entry

    问题 执行一个增加字段的DDL语句脚本时,报错,错误如下: Error 1062: Duplicate entry 'c51d3db8-59a5 2022-06-28 17:59:59' for ke ...

  3. 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 ...

  4. alter table add column多个字段_SQL对表中字段的操作 alter

    ALTER TABLE 语句用于在现有表中添加.删除或修改列. 注意不同的数据库的语句有所不一样 增加和删除都基本一致. 进行修改表中字段的时候注意: 本文主要介绍 sqlserver/mysql/o ...

  5. oracle drop column 多个,3000W记录,alter table drop column很慢

    最初由 yzm2008 发布 [B]Alter table T set unused(COLUMN) 和 drop column有什么区别吗? [/B] SET UNUSED Clause Speci ...

  6. alter table add column多个字段_ElementUI表格el-table表头固定自适应高度解决方案

    一.前言 ElementUI.iView都以相同的方式提供了表格组件表头固定的方法,即设置组件的height属性.表头固定很重要,就在于当表格数据项很多时,滚动条出现在表格组件内,而不是出现在表格组件 ...

  7. alter table add column多个字段_利用Python将多个excel合并到一个文件中

    数据岗位的小伙伴可能经常会遇到这样一个问题:多个来源返回的数据怎么整合到一个文件中?手动经常会出错,下面介绍一种利用Python处理的方式: 前期准备: 1.多个excel需要进行数据整理,保证文件的 ...

  8. alter table add column多个字段_WordPress 在文章列表快速编辑中编辑自定义字段

    在快速编辑中添加自定义字段,通常我们不需要在 WordPress 后台文章列表的"快速编辑"菜单中进行更改,但有的时候如果可以把常用的设置添加到"快速编辑"菜单 ...

  9. sql server 使用drop column 列名 删除列时报错,由于一个或多个对象访问此 列,ALTER TABLE DROP COLUMN stu_cou_num 失败

    删除没有任何其他引用的列时,出现了错误 仔细看了下这个列,并没有什么特殊.如下图: 但其确实有个约束: 'DF__HIS_DRUG___ALL_I__04E4BC85' . 为什么有这个约束呢??? ...

最新文章

  1. Git学习总结(一)
  2. Numpy统计计算、数组比较,看这篇就够了
  3. 人工智能先驱 Nils Nilsson 去世,吴恩达、Yann LeCun 悼念
  4. 深度linux系统gho,深度技术ghost版的win7操作系统下载
  5. 2019 Flutter 心愿单
  6. 青州市2021年高考成绩查询,2021年青州市高考状元名单资料,今年青州市高考状元多少分...
  7. SQL重复记录处理(查找,过滤,删除)
  8. Why Service Mesh
  9. vue使用prevent修饰符阻止标签的默认行为
  10. SQLServer实现快速进行简繁体的翻译功能
  11. IndexError: index 0 is out of bounds for axis 0 with size 0
  12. 如何笔记本盖上连接显示器不熄屏?
  13. 使用@JsonFormat注解 后端往前端页面展示日期为英文问题 (例如:Thu Dec 09 00:00:00 CST 2021)
  14. VMWare Workstation、GSX Server、ESX Server的区别?
  15. 常用的三种白平衡算法整理
  16. 如何防止网站快照被劫持收录攻击
  17. 7天内完成基础USB开发(3)——硬件平台介绍及开发要点
  18. 【语音识别】基于DTW算法实现0~9数字和汉字语音识别含Matlab源码
  19. java+selenium的入门 案例 selenium包 谷歌驱动包 火狐驱动包 IE驱动包 (一)
  20. 利用poi将Html中table转为Excel

热门文章

  1. Docker化Node.js网络应用
  2. 点晴信息技术告诉您点晴OA是如何做出色的免费OA系统
  3. centos 日志审计_CentOS7下安全审计工具Auditd的简单使用
  4. 【职场进阶】入职没有几天就离职是什么心态?
  5. Joint Discriminative and Generative Learning for Person Re-identification 论文翻译
  6. echarts 中国地图飞机实现demo 中国地图路线飞行 echarts飞行
  7. 程序员35岁危机是一个善意的谎言,保持危机感但不用惊恐
  8. 中国分电器及点火线圈市场现状研究分析与发展前景预测报告(2022)
  9. 牧牛商学院,区块链技术在会计领域的应用
  10. 米兔机器人魔方_米兔卡片学习机首晒