ADD COLUMN为数据库的表添加一个新列。

概要

图片

所需权限

用户必须有表的create权限。

参数

参数 描述
table_name 需要添加列的表
column_name 要添加的列名称。 列名必须满足命名规则 ,并且必须在表内唯一,不过可以和索引和约束同名。
typename 新列的数据类型
col_qualification 列定义的可选列表,可能包括列级约束排序规则列族分配

需要注意的是,无法直接添加具有外键约束的列。你可以添加没有约束的列,然后使用CREATE INDEX索引列,再使用ADD CONSTRAINT将外键约束添加到列。

查看Schema变更

每当你操作表scheme变更时,CockroachDB都会将它注册为一个Job,你可以通过SHOW JOBS查看。

举例

添加单个列

> ALTER TABLE accounts ADD COLUMN names STRING;
> SHOW COLUMNS FROM accounts;
+-----------+-------------------+-------+---------+-----------+
|   Field   |       Type        | Null  | Default |  Indices  |
+-----------+-------------------+-------+---------+-----------+
| id        | INT               | false | NULL    | {primary} |
| balance   | DECIMAL           | true  | NULL    | {}        |
| names     | STRING            | true  | NULL    | {}        |
+-----------+-------------------+-------+---------+-----------+

添加多个列

> ALTER TABLE accounts ADD COLUMN location STRING, ADD COLUMN amount DECIMAL;
> SHOW COLUMNS FROM accounts;
+-----------+-------------------+-------+---------+-----------+
|   Field   |       Type        | Null  | Default |  Indices  |
+-----------+-------------------+-------+---------+-----------+
| id        | INT               | false | NULL    | {primary} |
| balance   | DECIMAL           | true  | NULL    | {}        |
| names     | STRING            | true  | NULL    | {}        |
| location  | STRING            | true  | NULL    | {}        |
| amount    | DECIMAL           | true  | NULL    | {}        |
+-----------+-------------------+-------+---------+-----------+

添加具有默认值的非空列

> ALTER TABLE accounts ADD COLUMN interest DECIMAL NOT NULL DEFAULT (DECIMAL '1.3');
> SHOW COLUMNS FROM accounts;
+-----------+-------------------+-------+---------------------------+-----------+
|   Field   |       Type        | Null  |          Default          |  Indices  |
+-----------+-------------------+-------+---------------------------+-----------+
| id        | INT               | false | NULL                      | {primary} |
| balance   | DECIMAL           | true  | NULL                      | {}        |
| names     | STRING            | true  | NULL                      | {}        |
| location  | STRING            | true  | NULL                      | {}        |
| amount    | DECIMAL           | true  | NULL                      | {}        |
| interest  | DECIMAL           | false | ('1.3':::STRING::DECIMAL) | {}        |
+-----------+-------------------+-------+---------------------------+-----------+

添加具有唯一值的非空列

> ALTER TABLE accounts ADD COLUMN cust_number DECIMAL UNIQUE NOT NULL;

添加具有排序规则的列

> ALTER TABLE accounts ADD COLUMN more_names STRING COLLATE en;

添加列并将其分配给列族

添加列并将其分配给新列族

> ALTER TABLE accounts ADD COLUMN location1 STRING CREATE FAMILY new_family;

添加列并将其分配给现有列族

> ALTER TABLE accounts ADD COLUMN location2 STRING FAMILY existing_family;

如果列族不存在,添加列并创建新列族

> ALTER TABLE accounts ADD COLUMN new_name STRING CREATE IF NOT EXISTS FAMILY f1;

See Also