如果创建的 Cloud Spanner 表包含可为 null 的列,是否可以在列上添加 NOT NULL 约束而无需重新创建表?
在现有表上的 Spanner 中创建不可空列通常需要三个步骤:
# add new column to table
ALTER TABLE <table_name> ADD COLUMN <column_name> <value_type>;
# create default values
UPDATE <table_name> SET <column_name>=<default_value> WHERE TRUE;
# add constraint
ALTER TABLE <table_name> ALTER COLUMN <column_name> <value_type> NOT NULL;
不幸的是,无法添加非空列
做法:
1 添加可为空的列
ALTER TABLE table1 ADD COLUMN column1 STRING(255)
UPDATE TABLE table1 SET column1 = "<GENERATED DATA>"
ALTER TABLE table1 ALTER COLUMN column1 STRING(255) NOT NULL
谢谢。
您可以使用以下查询创建非空列:
ALTER TABLE table1 ADD COLUMN column1 INT64 NOT NULL DEFAULT (0);