O comando RELEASE SAVEPOINT destrói o ponto de salvamento definido anteriormente na transação corrente. [1]
Destruir um ponto de salvamento faz com que este não fique mais disponível como ponto para desfazer (rollback), mas não ocasiona nenhum outro comportamento visível pelo usuário. Não desfaz os efeitos dos comandos executados após o estabelecimento do ponto de salvamento (Para fazer isto deve ser consultado o comando ROLLBACK TO SAVEPOINT). A destruição de um ponto de salvamento quando não for mais necessário pode permitir ao sistema recuperar alguns recursos antes do fim da transação.
O comando RELEASE SAVEPOINT também destrói todos os pontos de salvamento estabelecidos depois que o ponto de salvamento especificado foi estabelecido.
Especificar um nome de ponto de salvamento que não foi definido anteriormente é um erro.
Não é possível liberar um ponto de salvamento quando a transação está no estado interrompido (aborted).
Se vários pontos de salvamento tiverem o mesmo nome, somente será liberado o que foi definido mais recentemente.
Para estabelecer um ponto de salvamento e destruí-lo posteriormente:
BEGIN; CREATE TEMPORARY TABLE tabela1 (col1 int) ON COMMIT DROP; INSERT INTO tabela1 VALUES (3); SAVEPOINT meu_ponto_de_salvamento; INSERT INTO tabela1 VALUES (4); RELEASE SAVEPOINT meu_ponto_de_salvamento; SELECT * FROM tabela1; COMMIT; col1 ------ 3 4 (2 linhas)
A transação acima inseriu tanto o 3 quanto o 4.
Este comando está em conformidade com o padrão SQL. O padrão especifica que a palavra chave SAVEPOINT é obrigatória, mas o PostgreSQL permite que seja omitida.
[1] |
DB2 — O comando RELEASE SAVEPOINT é utilizado para indicar que o aplicativo não deseja mais que o ponto de salvamento especificado seja mantido. Após este comando ser submetido, não é mais possível desfazer até o ponto de salvamento. Todos os pontos de salvamento aninhados ao ponto de salvamento especificado também são liberados. DB2 Version 9 for Linux, UNIX, and Windows (N. do T.) |