Spanner API 是否支持 DML 语句?例如,是否支持以下内容:
UPDATE SET foo="bar" WHERE foo="baz"
Spanner API 是否支持 DML 语句?例如,是否支持以下内容:
UPDATE SET foo="bar" WHERE foo="baz"
2018 年 10 月中旬更新为公关:
Cloud Spanner 现在支持、INSERT
和使用直接 DML UPDATE
:DELETE
Cloud Spanner 不支持 INSERT/UPDATE/DELETE DML 操作,但是您可以使用读写事务来达到相同的效果。对数据的所有更改都必须通过接受Mutation对象的事务提交方法(在 REST 或 gRPC 中) 。
在你的例子中,你会
SELECT <key> from MyTable where foo="baz"
.Mutation
对象列表(从您的选择中返回的每一行一个)以及update
将所有值设置为的属性"bar"
。Google Cloud Spanner 本身不支持这一点,但是这个 JDBC 驱动程序https://github.com/olavloite/spanner-jdbc通过解析提供的 SQL 并调用 Google Cloud Spanner 的读/写 API 来支持它。查看 CloudSpannerPreparedStatement 中的代码,了解它是如何完成的。该驱动程序依赖于https://github.com/JSQLParser/JSqlParser提供的 SQL 解析。
从上述 JDBC 驱动程序的 0.16 版和更新版本开始,支持在多行上运行的完整 DML 语句。您可以将驱动程序与 SQuirreL 或 DBVisualizer 等工具结合使用,以便将语句发送到 Cloud Spanner。
在这里查看一些示例:http ://www.googlecloudspanner.com/2018/02/data-manipulation-language-with-google.html