명시적 트랜잭션 사용하기¶
명시적 트랜잭션 에서 SQL 문을 실행하려면 단일 HTTP 요청 을 사용하여 트랜잭션의 시작, 끝, 문을 지정해야 합니다. 예:
{ "statement": "begin transaction; insert into table2 (i) values (1); commit; select i from table1 order by i", ... "parameters": { "MULTI_STATEMENT_COUNT": "4" } ... }
요청에 여러 문 을 지정하는 경우와 마찬가지로, 요청이 성공적으로 처리되면 Snowflake는 statementHandles
필드가 포함된 응답을 반환하며, 이 필드는 요청(BEGIN TRANSACTION 및 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 }
statementHandles
필드의 핸들은 요청의 문에 해당합니다. 이 예에서 문 및 해당 핸들은 다음과 같습니다.
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
)
이 핸들을 사용하여 각 문 상태를 확인 할 수 있습니다.