是否可以重命名列?
Is it possible to rename columns?
是否可以发布类似
的问题
RENAME COLUMN col1 col2
在 Google Cloud Spanner 中?从 DDL 看来这是不可能的;如果不是,这是 Beta 版的设计选择还是限制?
不,这是不可能的。目前,您只能对 table 中的列进行以下更改:
- 添加一个新的
- 删除一个现有的,除非它是一个键列
- 更改删除行为(是否级联)
- 在
STRING
和BYTES
之间转换
- 更改
STRING
和 BYTES
的长度
- 添加或删除
NOT NULL
修饰符
按顺序执行以下步骤可以解决此问题:
- 将新列添加到您的 table
- 更新您的代码以从两列读取内容
- 更新您的代码以仅写入新代码
- 运行 将数据从旧列迁移到新列的 Cloud Dataflow 作业
- 更新您的代码以仅读取新列
- 删除旧列
请记住,上述步骤不适用于主键列,您必须创建一个新的 table,然后以这种方式进行数据迁移。
是否可以发布类似
的问题RENAME COLUMN col1 col2
在 Google Cloud Spanner 中?从 DDL 看来这是不可能的;如果不是,这是 Beta 版的设计选择还是限制?
不,这是不可能的。目前,您只能对 table 中的列进行以下更改:
- 添加一个新的
- 删除一个现有的,除非它是一个键列
- 更改删除行为(是否级联)
- 在
STRING
和BYTES
之间转换
- 更改
STRING
和BYTES
的长度
- 添加或删除
NOT NULL
修饰符
按顺序执行以下步骤可以解决此问题:
- 将新列添加到您的 table
- 更新您的代码以从两列读取内容
- 更新您的代码以仅写入新代码
- 运行 将数据从旧列迁移到新列的 Cloud Dataflow 作业
- 更新您的代码以仅读取新列
- 删除旧列
请记住,上述步骤不适用于主键列,您必须创建一个新的 table,然后以这种方式进行数据迁移。