Utilisation de transactions explicites¶
Pour exécuter des instructions SQL dans une transaction explicite, vous devez utiliser une requête simple HTTP pour spécifier le début, la fin et les instructions de la transaction. Par exemple :
{
"statement": "begin transaction; insert into table2 (i) values (1); commit; select i from table1 order by i",
...
"parameters": {
"MULTI_STATEMENT_COUNT": "4"
}
...
}
Comme c’est le cas lorsque vous spécifiez plusieurs instructions dans une requête, si la requête a été traitée avec succès, Snowflake renvoie une réponse contenant le champ statementHandles
, qui est défini comme un tableau de handles pour les instructions de la requête (y compris les instructions BEGIN TRANSACTION et COMMIT).
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
}
Les handles du champ statementHandles
correspondent aux instructions de la requête. Dans cet exemple, les instructions et leurs handles correspondants sont les suivants :
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
)
Vous pouvez utiliser ces handles pour vérifier le statut de chaque instruction.