对于您在 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 |