ALTER TABLE & ALTER TYPES

简介: 摘要: 主要的内容是alter, alter table, alter type, length, postgresql 9.2, rewrite, reindex,转换函数不需要重写表和索引

摘要: 主要的内容是alter, alter table, alter type, length, postgresql 9.2, rewrite, reindex

下面有三个补丁供大家使用, 它们是由 Robert Hass 提交的。

2月7日的补丁


添加一个 numeric 类型 typmode coercisiions 的转换函数
这将会使得 alter table操作 可以跳过表和索引重建时字段更改为不受约束的数字, 或者当这个比例不变时
精度不降低.

noah misch, 提供了语法上的修改和一个OID修改

补丁 二


添加了一个 varbit 类型的 typmod coercisions 转换函数
这将会使得 alter table 操作可以跳过表和索引重建时这个新类型 varbit 不受约束, 或者允许位减少

最后的补丁


添加一个 various temporal typmod coercisions 的转换函数
可以使得 alter table 在一些情况下跳过表和索引重建

接下来通过具体的例子, 我们来查看它的优点。

  1. numeric(x, y) 到 numeric(x+, y) -- 具体的例子是 从numeric(8,3) 到 numeric(10, 3)
  2. 任意 numeric 到 numeric 没有指定精度和没有指定比例/范围 如下面的语句

    alter table z alter column i type numeric;
  1. varbit(x) 到 varbit(x+) -- 具体例子从 varbit(8) 到 varbit(10)
  2. 任意的 varbit 字段 没有长度限制

alter table z alter column i type varbit;

  1. time(x) 到 time(x+) --- 具体例子 time(2) 到 time(3)
  2. 任意时间字段到时间字段, 没有精度限制

alter table z alter column i type time;

  1. timez(x) 到 timez(x+) -- 具体例子是 timez(2) 到 timez(3)
  2. 任意 timetz 到 timetz 字段, 精度不限制

alter table z alter column i type timetz;

  1. timestamp(x) 到 timestamp(x+) -- 具体的例子是 timestamp(2) 到 timestamp(3)
  2. 任意的 timestamp 到timestamp 没有精度要求

alter table z alter column i type timestamp;

  1. interval(x) 到interval(x+) -- 具体的例子就是 从 interval(2) 到 interval(3)
  2. 任意的interval 到interval 字段, 没有精度限制

alter table z alter column i type interval;

具体的内容参看下面的信息

从 "INTERVAL YEAR" 到

“INTERVAL YEAR”
"INTERVAL DAY"
"INTERVAL HOUR"
"INTERVAL MINUTE"
"INTERVAL SECOND"
"INTERVAL YEAR TO MONTH"
"INTERVAL DAY TO HOUR"
"INTERVAL DAT TO MINUTE"
"INTERVAL DAY TO SECOND"
"INTERVAL HOUR TO MINUTE"
"INTERVAL HOUR TO SECOND"
"INTERVAL MINUTE TO SECOND"

从 "INTERVAL MONTH" 到

"INTERVAL YEAR"
"INTERVAL MONTH"
"INTERVAL DAY"
"INTERVAL HOUR"
"INTERVAL MINUTE"
"INTERVAL SECOND"
"INTERVAL YEAR TO MONTH"
"INTERVAL DAY TO HOUR"
"INTERVAL DAY TO MINUTE"
"INTERVAL DAY TO SECOND"
"INTERVAL MINUTE TO SECOND"

从 "INTERVAL DAY" 到

"INTERVAL DAY"
"INTERVAL HOUR"
"INTERVAL MINUTE"
"INTERVAL SECOND"
"INTERVAL DAY TO HOUR"
"INTERVAL DAY TO MINUTE"
"INTERVAL DAY TO SECOND"
"INTERVAL HOUR TO MINUTE"
"INTERVAL HOUR TO SECOND"
"INTERVAL MINUTE TO SECOND"

从 "INTERVAL MINUTE" 到

"INTERVAL MINUTE"
"INTERVAL SECOND"
"INTERVAL DAY TO MINUTE"
"INTERVAL DAY TO SECOND"
"INTERVAL HOUR TO MINUTE"
"INTERVAL HOUR TO SECOND"
"INTERVAL MINUTE TO SECOND"

从 "INTERVAL SECOND" 到

"INTERVAL MINUTE"
"INTERVAL SECOND"
"INTERVAL DAY TO MINUTE"
"INTERVAL DAY TO SECOND"
"INTERVAL HOUR TO MINUTE"
"INTERVAL HOUR TO SECOND"
"INTERVAL MINUTE TO SECOND"

从 "INTERVAL YEAR TO MONTH " 到

“INTERVAL YEAR”
"INTERVAL DAY"
"INTERVAL HOUR"
"INTERVAL MINUTE"
"INTERVAL SECOND"
"INTERVAL YEAR TO MONTH"
"INTERVAL DAY TO HOUR"
"INTERVAL DAY TO MINUTE"
"INTERVAL DAY TO SECOND"
"INTERVAL HOUR TO MINUTE"
"INTERVAL HOUR TO SECOND"
"INTERVAL MINUTE TO SECOND"

从 "INTERVAL DAY TO HOUR" 到

“INTERVAL HOUR”
"INTERVAL MINUTE"
"INTERVAL SECOND"
"INTERVAL DAY TO HOUR"
"INTERVAL DAY TO MINUTE"
"INTERVAL DAY TO SECOND"
"INTERVAL HOUR TO MINUTE"
"INTERVAL HOUR TO SECOND"
"INTERVAL MINUTE TO SECOND"

从 "INTERVAL DAY TO MINUTE" 到

"INTYERVAL MINUTE "
"INTERVAL SECOND"
"INTERVAL DAY TO MINUTE"
"INTERVAL DAY TO SECOND"
"INTERVAL HOUR TO MINUTE"
"INTERVAL HOUR TO SECOND"
"INTERVAL MINUTE TO SECOND"

从 "INTERVAL DAY TO SECOND" 到

"INTERVAL MINUTE"
"INTERVAL SECOND"
"INTERVAL DAY TO MINUTE"
"INTERVAL DAY TO SECOND"
"INTERVAL HOUR TO MINUTE"
"INTERVAL HOUR TO SECOND"
"INTERVAL MINUTE TO SECOND"

从 "INTERVAL HOUR TO MINUTE" 到

"INTERVAL MINUTE"
"INTERVAL SECOND"
"INTERVAL DAY TO MINUTE"
"INTERVAL    DAY TO SECOND"
"INTERVAL HOUR TO MINUTE"
"INTERVAL HOUR TO SECOND"
"INTERVAL MINUTE TO SECOND"

从 "INTERVAL HOUR TO SECOND" 到

"INTERVAL MINUTE"
"INTERVAL SECOND"
"INTERVAL DAY TO MINUTE"
"INTERVAL DAY TO SECOND"
"INTERVAL HOUR TO MINUTE"
"INTERVAL HOUR TO SECOND"
"INTERVAL MINUTE TO SECOND"

从 "INTERVAL MINUTE TO SECOND"

"INTERVAL MINUTE"
"INTERVAL SECOND"
"INTERVAL DAY TO MINUTE"
"INTERVAL DAY TO SECOND"
"INTERVAL HOUR TO MINUTE"
"INTERVAL HOUR TO SECOND"
"INTERVAL MINUTE TO SECOND"

这些数据类型的大部分是非常奇特的, 但是他们确实非常有用, 而且使用这种转换能力,不需要重写表和索引是一件非常好
的事情,在这里感谢诺亚和罗伯特

目录
相关文章
|
3月前
|
关系型数据库 数据库 PostgreSQL
在 Postgres 中使用 Alter Table
【8月更文挑战第11天】
70 0
在 Postgres 中使用 Alter Table
|
4月前
|
SQL Oracle 关系型数据库
ALTER TABLE
【7月更文挑战第19天】ALTER TABLE 。
57 5
|
4月前
|
存储 数据库
DROP DATABASE 语句
【7月更文挑战第20天】DROP DATABASE 语句。
57 3
|
4月前
|
SQL Oracle 关系型数据库
ALTER TABLE 时的 SQL UNIQUE 约束
【7月更文挑战第16天】ALTER TABLE 时的 SQL UNIQUE 约束。
23 1
|
SQL Oracle 关系型数据库
SQL FOREIGN KEY Constraint on CREATE TABLE
SQL FOREIGN KEY Constraint on CREATE TABLE
88 1
|
SQL 数据库
CREATE TABLE
CREATE TABLE
154 0
ALTER TABLE
本文主要介绍如何对表相关的Sequence类型进行修改。
|
关系型数据库 MySQL
truncate table 和 drop table 的一点坑
网上一搜这个关键字,得到的结果大多都是delete、truncate、drop之间的区别 但是今天我们要讲的内容,是我们在生产环境中遇到的真实案例 互联网公司一般对大表,都会采用分区表或者物理分表吧,这里主要描述的是分表的删除过程中的问题 案例一 环境MySQL5.
4053 0