預定義列是為數據表預先定義一些非主鍵列以及其類型。為數據表設置預定義列后,在創建二級索引時,您可以將預定義列作為索引表的索引列或者屬性列。如果不再使用某些預定義列,您可以刪除相應預定義列。
注意事項
只有使用二級索引時才需要為數據表添加預定義列,使用多元索引時無需為數據表添加預定義列。
單個數據表默認最大支持添加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。
如果功能執行報錯,請根據報錯信息在錯誤碼參考文檔中查找出錯原因并處理問題。
創建預定義列后,您可以根據需要創建二級索引用于數據查詢。具體操作,請參見創建二級索引。