postgresql 数据库 alter table alter column set default 的一些实践

postgresql 数据库 alter table alter column set default 的一些实践os centos7 4db postgresql10 11 创建表后 有时需要对表进行 setdefault 或者 dropdefault 设置 版本 cat etc centos releaseCentO 4 1708 Core su postgres psql c selectversio

创建表后,有时需要对表进行 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  (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 ms postgres=# create table tmp_t4( id int8, name varchar(100), memo1 varchar(100), memo2 varchar(100) ); CREATE TABLE Time: 360.530 ms postgres=# insert into tmp_t4 select id, md5(id::varchar), md5(id::varchar), null from generate_series(1,) as id; INSERT 0  Time: 58346.187 ms (00:58.346) postgres=# select * from tmp_t4 limit 5; id | name | memo1 | memo2 ----+----------------------------------+----------------------------------+------- 1 | c4ca4238a0bdcc509a6f75849b | c4ca4238a0bdcc509a6f75849b | 2 | c81e728d9d4c2f636f067f89cc14862c | c81e728d9d4c2f636f067f89cc14862c | 3 | eccbc87e4b5ce2fe28308fd9f2a7baf3 | eccbc87e4b5ce2fe28308fd9f2a7baf3 | 4 | a87ff679a2f3e71d9181a67bc | a87ff679a2f3e71d9181a67bc | 5 | e4da3b7fbbce2345d7772b0674a318d5 | e4da3b7fbbce2345d7772b0674a318d5 | (5 rows) Time: 0.796 ms postgres=# \d+ tmp_t4 Table "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 --------+---------+-------------+---------+--------------  | tmp_t4 |  | r |  (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_t4 Table "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 --------+---------+-------------+---------+--------------  | tmp_t4 |  | r |  (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_t4 Table "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 | c4ca4238a0bdcc509a6f75849b | c4ca4238a0bdcc509a6f75849b | | aaa 2 | c81e728d9d4c2f636f067f89cc14862c | c81e728d9d4c2f636f067f89cc14862c | | aaa 3 | eccbc87e4b5ce2fe28308fd9f2a7baf3 | eccbc87e4b5ce2fe28308fd9f2a7baf3 | | aaa 4 | a87ff679a2f3e71d9181a67bc | a87ff679a2f3e71d9181a67bc | | aaa 5 | e4da3b7fbbce2345d7772b0674a318d5 | e4da3b7fbbce2345d7772b0674a318d5 | | aaa (5 rows) Time: 0.619 ms postgres=# select oid,relname,relfilenode,relkind,relfrozenxid from pg_class pc where pc.relname='tmp_t4'; oid | relname | relfilenode | relkind | relfrozenxid --------+---------+-------------+---------+--------------  | tmp_t4 |  | r |  (1 row) Time: 0.834 ms 

relfilenode 由之前 变为

add column set default 确实要慎重

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229094.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午5:29
下一篇 2026年3月16日 下午5:29


相关推荐

  • SIP协议详解(一)

    SIP协议详解(一)1 SIP 协议介绍 Internet 的许多应用都需要建立和管理一个会话 会话在这里的含义是在参与者之间的数据的交换 由于考虑到参与者的实际情况 这些应用的实现往往是很复杂的 参与者可能是在代理间移动 他们可能可以有多个名字 他们中间的通讯可能是基于不同的媒介 比如文本 多媒体 视频 音频等 有时候是多种媒介一起交互 人们创造了无数种通讯协议应用于实时的多媒体会话数据比如声音 影像 或者

    2026年3月19日
    2
  • linux操作系统常用操作命令_运行cmd命令大全

    linux操作系统常用操作命令_运行cmd命令大全一.文件操作命令1.df 显示磁盘使用情况2.du 显示文件系统使用情况3.ls 显示目录普通使用:ls  ls-l  ll查看多个目录:ls/ /ect 查看/和/etc下的文件查看隐藏文件:ls-a 4.cd 切换工作目录切换到根目录:cd/切换到上一级目录:cd..切换到当前用户家目录:cd切换到普…

    2022年9月1日
    10
  • 头像上传-前后端分离

    头像上传-前后端分离背景 表单提交 将用户的头像传递到后台 后台通过流处理 将文件写到文件服务器 本地模拟 并存入数据库效果图 前端 html 中需要引入 cookie js jquery 3 4 1 min js jquery form js divclass uicontainer id upload enctype multipart form data 表示表单有多种数据构成 既有文本 又有二进制 lt divclass uicontainer id upload

    2026年3月19日
    2
  • 程序猿常识–OJ系统和ACM测试考试大全

    程序猿常识–OJ系统和ACM测试考试大全

    2022年1月11日
    44
  • 决策树分析例题经典案例_决策树原理及一个简单的小例子[通俗易懂]

    决策树分析例题经典案例_决策树原理及一个简单的小例子[通俗易懂]首先通过两个图来引入什么是决策树。是否学习的决策过程决策树是仿树结构来进行决策的,例如上图来说,我们要对‘是否学习’这个问题进行决策时,通常伴随一系列的子决策。先看是否有‘对象’,有的话是否需要‘陪伴对象’,通过一次次子决策后得到最终决策:是否学习。一般情况下,一棵决策树包含一个根节点,若干内部节点和若干叶节点,如下图所示,那么与是否学习的决策过程对应起来,‘女票’为根节点,’陪女友’和‘任务’‘…

    2025年10月2日
    8
  • Logstash常用配置和日志解析

    Logstash常用配置和日志解析logstashlogs 是一个数据分析软件 主要目的是分析 log 日志 整一套软件可以当作一个 MVC 模型 logstash 是 controller 层 Elasticsearc 是一个 model 层 kibana 是 view 层 首先将数据传给 logstash 它将数据进行过滤和格式化 转成 JSON 格式 然后传给 Elasticsearc 进行存储 建搜索的索引 kibana 提供前端的页面再进行搜

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号