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