Pergunta

O que é o equivalente às seguintes instruções SQL Server em DB2?

  • Comece Transaction
  • Commit Transaction
  • Rollback Transaction
Foi útil?

Solução

aqui para um exemplo. Mas, basicamente

BEGIN TRANSACTION
COMMIT TRANSACTION
ROLLBACK

Outras dicas

A resposta é realmente um pouco mais complicado do que o indicado aqui. É verdade que as transações são ANSI padronizado, e DB2 pode apoiá-los.

DB2 para z / OS pode ser um animal muito diferente das outras variantes (LUW, Linux-Unix-Windows, sendo o mais comum). Em risco de resvalar para um discurso retórico, isto faz com que a idéia de falar sobre o DB2 quase inútil. Você está falando de alguma variante específica do banco de dados da IBM, mas o que funciona em um pode ser completamente inválido em outro. Vou assumir que qualquer sabor do OP estava usando não era o z / OS, uma vez que a resposta BEGIN TRANSACTION foi aceito.

Para aqueles de vocês que tropeçar este tentando usar transações com o DB2 z / OS, aqui é o resumo: DB2 para o mainframe não tem transações explícitas. Não há BEGIN TRANSACTION ou qualquer outra construção comparável. Transações são iniciadas implicitamente (normalmente referido como uma unidade de trabalho nos docs) e confirmada ou revertida de forma explícita (normalmente - muitas ferramentas GUI, como Sapo, têm uma característica autocommit que podem deslocar-se sobre você de vez em quando).

A partir do manual de referência 9.1 z / OS SQL (página 28, disponível em http: //www-01.ibm.com/support/docview.wss?uid=swg27011656#manuals ):

"A unidade de trabalho é iniciado quando é iniciado um processo de candidatura. Uma unidade de trabalho Também é iniciada quando a unidade anterior de trabalho é encerrado por algo diferente de o fim do processo de aplicação. Uma unidade de trabalho é encerrado por uma operação de confirmação, uma operação de reversão completa, ou o fim de um processo de aplicação. A confirmação ou anulação operação afeta somente o banco de dados as alterações feitas dentro da unidade de trabalho termina ".

A coisa mais próxima que você começa quando escrever scripts é especificar manualmente um ponto de salvamento.

Estes olhar como esta:

 SAVEPOINT A ON ROLLBACK RETAIN CURSORS;

 UPDATE MYTABLE SET MYCOL = 'VAL' WHERE 1;

 ROLLBACK WORK TO SAVEPOINT A;

Superficialmente, estes se assemelham transações explícitas, mas eles não são. Em vez disso, eles realmente são apenas pontos no tempo dentro de uma única transação implícita. Para muitos propósitos, eles pode ser suficiente, mas é importante estar ciente das diferenças conceituais.

enter descrição da imagem aqui Se você usar um IDE como o IntelliJ IDEA (ou outros), então você não tem a possibilidade de iniciar explicitamente uma transação. Em outras palavras, você não pode digitar 'começam transação' no console do seu IDE.
Mas você pode desativar 'Auto-commit' (e reativá-lo mais tarde) e, em seguida, digite 'comprometer' ou "reversão' para o console.
Em IDEA há também um botão para 'cometer' e um botão para 'reversão'. Ter um olhar para o despejo de tela anexado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top