Verwenden expliziter Transaktionen

Zur Ausführung von SQL-Anweisungen in einer expliziten Transaktion müssen Sie eine einzelne HTTP-Anforderung verwenden, um den Start, das Ende und die Anweisungen der Transaktion anzugeben. Beispiel:

{
  "statement": "begin transaction; insert into table2 (i) values (1); commit; select i from table1 order by i",
  ...
  "parameters": {
      "MULTI_STATEMENT_COUNT": "4"
  }
  ...
}
Copy

Wie bei der Angabe von mehreren Anweisungen in einer Anforderung gibt Snowflake bei erfolgreicher Verarbeitung der Anforderung eine Antwort zurück, die das Feld statementHandles enthält, das auf ein Array von Handles für die Anweisungen in der Anforderung (einschließlich der Anweisungen BEGIN TRANSACTION und COMMIT) gesetzt ist.

HTTP/1.1 200 OK
Content-Type: application/json

{
  "resultSetMetaData" : {
    "numRows" : 1,
    "format" : "jsonv2",
    "rowType" : [ {
      "name" : "multiple statement execution",
      "database" : "",
      "schema" : "",
      "table" : "",
      "type" : "text",
      "byteLength" : 16777216,
      "scale" : null,
      "precision" : null,
      "nullable" : false,
      "collation" : null,
      "length" : 16777216
    } ]
  },
  "data" : [ [ "Multiple statements executed successfully." ] ],
  "code" : "090001",
  "statementHandles" : [ "019d6ed0-0502-3101-0000-096d00421082", "019d6ed0-0502-3101-0000-096d00421086", "019d6ed0-0502-3101-0000-096d0042108a", "019d6ed0-0502-3101-0000-096d0042108e" ],
  "statementStatusUrl" : "/api/v2/statements/019d6ed0-0502-3101-0000-096d0042107e?requestId=066920fa-e589-43c6-8cca-9dcb2d4be978",
  "sqlState" : "00000",
  "statementHandle" : "019d6ed0-0502-3101-0000-096d0042107e",
  "message" : "Statement executed successfully.",
  "createdOn" : 1625684162876
}
Copy

Die Handles im Feld statementHandles entsprechen den Anweisungen in der Anforderung. In diesem Beispiel sind die Anweisungen mit den entsprechenden Handles wie folgt:

  • BEGIN TRANSACTION (019d6ed0-0502-3101-0000-096d00421082)

  • INSERT (019d6ed0-0502-3101-0000-096d00421086)

  • COMMIT (019d6ed0-0502-3101-0000-096d0042108a)

  • SELECT (019d6ed0-0502-3101-0000-096d0042108e)

Sie können diese Handles verwenden, um den Status jeder Anweisung zu überprüfen.