对于您在 ALTER TABLE 语句的 ADD、DROP 和 MODIFY 子句中指定的特定操作类型,数据库服务器将使用定点变更算法。
表 1 显示在哪些条件下 ALTER TABLE MODIFY 语句使用定点变更算法来处理 ALTER TABLE MODIFY 语句。
对列的操作 | 条件 |
---|---|
将 SMALLINT 列转换为 INTEGER 列 | All |
将 SMALLINT 列转换为 INT8 或 BIGINT 列 | All |
将 SMALLINT 列转换成 DEC(p2,s2) 列 | p2-s2 >= 5 |
将 SMALLINT 列转换成 DEC(p2) 列 | p2-s2 >= 5 OR nf |
将 SMALLINT 列转换成 SMALLFLOAT 列 | All |
将 SMALLINT 列转换成 FLOAT 列 | All |
将 SMALLINT 列转换成 CHAR(n) 列 | n >= 6 AND nf |
将 INT 列转换成 INT8 列 | All |
将 INT 列转换成 DEC(p2,s2) 列 | p2-s2 >= 10 |
将 INT 列转换成 DEC(p2) 列 | p2 >= 10 OR nf |
将 INT 列转换成 SMALLFLOAT 列 | nf |
将 INT 列转换成 FLOAT 列 | All |
将 INT 列转换成 CHAR(n) 列 | n >= 11 AND nf |
将 SERIAL 列转换成 INT8 列 | All |
将 SERIAL 列转换成 DEC(p2,s2) 列 | p2-s2 >= 10 |
将 SERIAL 列转换成 DEC(p2) 列 | p2 >= 10 OR nf |
将 SERIAL 列转换成 SMALLFLOAT 列 | nf |
将 SERIAL 列转换成 FLOAT 列 | All |
将 SERIAL 列转换成 CHAR(n) 列 | n >= 11 AND nf |
将 SERIAL 列转换成 SERIAL 列 | All |
将 SERIAL 列转换成 SERIAL8 列 | All |
将 DEC(p1,s1) 列转换成 SMALLINT 列 | p1-s1 < 5 AND (s1 == 0 OR nf) |
将 DEC(p1,s1) 列转换成 INTEGER 列 | p1-s1 < 10 AND (s1 == 0 OR nf) |
将 DEC(p1,s1) 列转换成 INT8 列 | p1-s1 < 20 AND (s1 == 0 OR nf) |
将 DEC(p1,s1) 列转换成 SERIAL 列 | p1-s1 < 10 AND (s1 == 0 OR nf) |
将 DEC(p1,s1) 列转换成 SERIAL8 或 BIGSERIAL 列 | p1-s1 < 20 AND (s1 == 0 OR nf) |
将 DEC(p1,s1) 列转换成 DEC(p2,s2) 列 | p2-s2 >= p1-s1 AND (s2 >= s1 OR nf) |
将 DEC(p1,s1) 列转换成 DEC(p2) 列 | p2 >= p1 OR nf |
将 DEC(p1,s1) 列转换成 SMALLFLOAT 列 | nf |
将 DEC(p1,s1) 列转换成 FLOAT 列 | nf |
将 DEC(p1,s1) 列转换成 CHAR(n) 列 | n >= 8 AND nf |
将 DEC(p1) 列转换成 DEC(p2) 列 | p2 >= p1 OR nf |
将 DEC(p1) 列转换成 SMALLFLOAT 列 | nf |
将 DEC(p1) 列转换成 FLOAT 列 | nf |
将 DEC(p1) 列转换成 CHAR(n) 列 | n >= 8 AND nf |
将 SMALLFLOAT 列转换成 DEC(p2) 列 | nf |
将 SMALLFLOAT 列转换成 FLOAT 列 | nf |
将 SMALLFLOAT 列转换成 CHAR(n) 列 | n >= 8 AND nf |
将 FLOAT 列转换成 DEC(p2) 列 | nf |
将 FLOAT 列转换成 SMALLFLOAT 列 | nf |
将 FLOAT 列转换成 CHAR(n) 列 | n >= 8 AND nf |
将 CHAR(m) 列转换成 CHAR(n) 列 | n >= m OR (nf AND not ANSI mode) |
增加 CHARACTER 列的长度 | Not ANSI mode |
增加 DECIMAL 或 MONEY 列的长度 | All |