lightdb alter table add column 语法支持括号

发布时间 2023-07-27 14:39:23作者: winter-loo

背景

在 Oracle 中,在旧表上用 alter table 命令一次添加多列是可以把列定义放在要括号里的,而 lightdb 之前版本 alter table 命令必须要多次执行 add .... 此次版本允许 lightdb 有同样功能。LightDB 版本为 LightDB1.0.V202303.00.000.

用例

  1. 以下行为都是允许的
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);
  1. 但是如果使用了括号,则不能再加 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);
                                   ^