背景
在 Oracle 中,在旧表上用 alter table
命令一次添加多列是可以把列定义放在要括号里的,而 lightdb 之前版本 alter table
命令必须要多次执行 add ...
. 此次版本允许 lightdb 有同样功能。LightDB 版本为 LightDB1.0.V202303.00.000
.
用例
- 以下行为都是允许的
CREATE TABLE foo(a int);
ALTER TABLE foo ADD COLUMN a1 int;
ALTER TABLE foo ADD COLUMN a2 int default 3;
ALTER TABLE foo ADD COLUMN b1 int, ADD COLUMN b2 int;
ALTER TABLE foo ADD (c1 int);
ALTER TABLE foo ADD (c2 int default 3);
ALTER TABLE foo ADD (
d1 int, d2 name, d3 text, d4 float8, d5 polygon,
d6 char, d7 tid, d8 xid, d9 oidvector, d10 boolean, d11 timestamp,
d13 path, d14 lseg, d15 point, d16 interval, d17 float8[], d18 float4[],
d19 int2[]
);
ALTER TABLE foo ADD (e1 int), ADD e2 int, ADD COLUMN e3 int, ADD (e4 int, e5 int);
- 但是如果使用了括号,则不能再加
COLUMN
关键字( oracle 没有这个关键字)。
# ALTER TABLE foo ADD COLUMN (e1 int); --fails
ERROR: syntax error at or near "("
LINE 1: ALTER TABLE foo ADD COLUMN (e1 int);
^