谷歌云 SQL + RETURN_GENERATED_KEYS

1 jdbc google-apps-script google-cloud-sql

我的 Google Cloud SQL 数据库中有一个带有自动递增列的表。

如何INSERT通过 google-apps-script/JDBC 执行查询并获取新增加的列的值?

例如,我的专栏名为ticket_id. 我希望在结果集中返回INSERT新值。ticket_id

换句话说,如果我有以下结构,我需要修改什么或如何修改,以便我可以做类似的事情rs = stmt.getGeneratedKeys();

var conn = Jdbc.getCloudSqlConnection("jdbc:google:rdbms:.......  
var stmt = conn.createStatement();

//build my INSERT sql statement  
var sql = "insert into ......

var rs = stmt.executeUpdate(sql);
Run Code Online (Sandbox Code Playgroud)

我看到有一个 JDBC 语句类,其中有一个名为 的成员RETURN_GENERATED_KEYS,但到目前为止我还不够聪明,无法弄清楚如何正确操作它并获得我需要的东西。是RETURN_GENERATED_KEYS一个常量,还是一个属性,或者我该如何使用它?

Aru*_*jan 5

Apps Script JDBC 服务的文档似乎有点缺乏。我为此创建了一个内部任务项。值得庆幸的是,Apps Script JDBC API 非常接近 Java JDBC API。关键是使用调用取回结果集stmt.getGeneratedKeys()

我使用 MySQL 文档中的动物示例构建了一个示例表,下面的示例可以很好地配合该表并记录下一个递增的 ID。

function foo() {
  var conn = Jdbc.getCloudSqlConnection("jdbc:google:rdbms://<instance>/<db>");
  var stmt = conn.createStatement();
  var sql = "INSERT INTO animals (name) VALUES ('dog')";
  var count = stmt.executeUpdate(sql,1)//pass in any int for auto inc IDs back
  var rs = stmt.getGeneratedKeys();
  //if you are only expecting one row back, no need for while loop
  // just do rs.next();
  while(rs.next()) { 
    Logger.log(rs.getString(1));
  }
  rs.close();
  stmt.close();
  conn.close();
}
Run Code Online (Sandbox Code Playgroud)