BEGIN¶
Começa uma transação na sessão atual.
START TRANSACTION é um sinônimo de BEGIN.
- Consulte também:
COMMIT , ROLLBACK , SHOW TRANSACTIONS , DESCRIBE TRANSACTION
Sintaxe¶
Parâmetros¶
WORK | TRANSACTIONPalavras-chave opcionais que proporcionam compatibilidade com outros sistemas de banco de dados.
NAME nameCadeia de caracteres opcional que atribui um nome à transação. Um nome ajuda a identificar uma transação, mas não é necessário e não precisa ser único.
Notas de uso¶
Todas as transações têm uma ID interna gerada pelo sistema. A ID de transação é um número inteiro assinado de 64 bits (de comprimento). O intervalo de valores é de -9.223.372.036.854.775.808 (-2 63) a 9.223.372.036.854.775.807 (2 63 – 1).
Se você especificar um nome para uma transação, a palavra-chave NAME é necessária.
Se um nome não for especificado, um nome gerado pelo sistema é atribuído à transação.
Para concluir uma transação, um comando COMMIT ou ROLLBACK deve ser explicitamente executado. Até que um destes comandos seja executado, a transação permanece em aberto.
Quando uma instrução SQL consulta um fluxo dentro de uma transação explícita, o fluxo é consultado no ponto de avanço do fluxo (ou seja, o carimbo de data/hora) quando a transação começou, e não quando a instrução foi executada. Este comportamento diz respeito tanto a instruções DML como instruções CREATE TABLE … AS SELECT (CTAS) que preenchem uma nova tabela com linhas de um fluxo existente.
Se duas instruções BEGIN em uma linha forem executadas (dentro do mesmo escopo), a segunda será ignorada. Por exemplo, no código a seguir, o segundo e terceiro BEGINs não têm efeito; a transação em aberto existente continua.
As regras podem ser mais complexas se você estiver usando transações autônomas com escopo e procedimentos armazenados.
Exemplos¶
Nota
Estes exemplos não incluem os comandos necessários para completar as transações. Para exemplos de transações completas, consulte COMMIT ou ROLLBACK.
Iniciar uma transação:
Observe o nome designado pelo sistema,
56cb9163-77a3-4223-b3e0-aa24a20540a3, para a transação.
Iniciar uma transação com um nome especificado:
Este exemplo é o mesmo que o exemplo anterior, mas usa START TRANSACTION em vez de BEGIN: