Go SDK 可执行 INSERT 语句,向未开启局部事务功能的数据表写入一行或多行数据。
前提条件
安装Tablestore Go SDK并初始化客户端。SQL DML 功能需要 1.9.2 及以上版本,建议使用最新版本。
-
已为待操作的数据表创建映射关系,且数据表未开启局部事务功能。
使用 RAM 用户时,已授予
SQL_DML权限。
功能说明
调用 SQLQuery 方法执行 INSERT 语句,写入一行数据。如果指定的主键已存在,请求会失败。
func (client *TableStoreClient) SQLQuery(request *SQLQueryRequest) (*SQLQueryResponse, error)
以下示例向 example_table 写入一行数据。
request := &tablestore.SQLQueryRequest{Query: `
INSERT INTO example_table (tenant_id, pk, name, score)
VALUES (1, 'row1', 'example', 10)`}
response, err := client.SQLQuery(request)
if err != nil {
log.Fatalf("SQLQuery failed: %v", err)
}
fmt.Println("AffectedRows:", response.AffectedRows)
参数说明
SQLQueryRequest 包含以下参数。
|
名称 |
类型 |
说明 |
|
Query(必选) |
string |
要执行的 |
返回值
SQLQueryResponse 包含以下与执行结果直接相关的字段。
|
字段 |
类型 |
说明 |
|
AffectedRows |
int64 |
受影响的行数。 |
|
StmtType |
SQLStatementType |
SQL 语句类型。本操作返回 |
场景示例
批量写入数据
一条 INSERT 语句最多写入 200 行。多行数据必须具有相同的分区键,并作为原子操作执行:全部写入成功或全部写入失败。
request := &tablestore.SQLQueryRequest{Query: `
INSERT INTO example_table (tenant_id, pk, name, score) VALUES
(1, 'row1', 'example-a', 10),
(1, 'row2', 'example-b', 20),
(1, 'row3', 'example-c', 30)`}
response, err := client.SQLQuery(request)
if err != nil {
log.Fatalf("SQLQuery failed: %v", err)
}
fmt.Println("AffectedRows:", response.AffectedRows)
该文章对您有帮助吗?