预定义列是为数据表预先定义一些非主键列以及其类型。为数据表设置预定义列后,在创建二级索引时,您可以将预定义列作为索引表的索引列或者属性列。如果不再使用某些预定义列,您可以删除相应预定义列。
注意事项
只有使用二级索引时才需要为数据表添加预定义列,使用多元索引时无需为数据表添加预定义列。
单个数据表默认最大支持添加32个预定义列。如果不满足使用需求,请提交工单申请调整。
前提条件
已初始化Client。具体操作,请参见初始化OTSClient。
已创建数据表。具体操作,请参见创建数据表。
增加预定义列
使用二级索引时,如果未设置预定义列或者预定义列不满足需求,则您可以为数据表增加预定义列。
说明
您也可以在创建数据表时添加预定义列。具体操作,请参见创建数据表。
参数
参数 | 是否必选 | 说明 |
TableName | 是 | 数据表名称。 |
DefinedColumns | 是 | 为数据表预先定义一些非主键列以及其类型,可以作为索引表的属性列或索引列。包含如下设置:
|
示例
以下示例用于为指定数据表增加预定义列,预定义列分别为defcol1(String类型)、defcol2(INTEGER类型)、defcol3(String类型)。
func AddDefinedColumn(client *tablestore.TableStoreClient, tableName string) {
addDefinedColumnRequest := new(tablestore.AddDefinedColumnRequest)
addDefinedColumnRequest.AddDefinedColumn("defcol1",tablestore.DefinedColumn_STRING)
addDefinedColumnRequest.AddDefinedColumn("defcol2",tablestore.DefinedColumn_INTEGER)
addDefinedColumnRequest.AddDefinedColumn("defcol3",tablestore.DefinedColumn_STRING)
addDefinedColumnRequest.TableName = tableName
_, err := client.AddDefinedColumn(addDefinedColumnRequest)
if (err != nil) {
fmt.Println("Failed to Add DefinedColumn with error:", err)
} else {
fmt.Println("Add DefinedColumn finished")
}
}
删除预定义列
删除数据表上不需要的预定义列。支持一次删除多个预定义列。
参数
参数 | 是否必选 | 说明 |
TableName | 是 | 数据表名称。 |
DefinedColumns | 是 | 预定义列名称。 |
示例
以下示例用于删除指定数据表的预定义列defcol1和defcol2。
func DeleteDefinedColumn(client *tablestore.TableStoreClient, tableName string){
deleteDefinedColumnRequest := new(tablestore.DeleteDefinedColumnRequest)
deleteDefinedColumnRequest.DefinedColumns = []string{"defcol1","defcol2"}
deleteDefinedColumnRequest.TableName = tableName
_, err := client.DeleteDefinedColumn(deleteDefinedColumnRequest)
if (err != nil) {
fmt.Println("Failed to delete DefinedColumn with error:", err)
} else {
fmt.Println("Delete DefinedColumn finished")
}
}
相关文档
关于API说明的更多信息,请参见AddDefinedColumn和DeleteDefinedColumn。
如果功能执行报错,请根据报错信息在错误码参考文档中查找出错原因并处理问题。
创建预定义列后,您可以根据需要创建二级索引用于数据查询。具体操作,请参见创建二级索引。