Что эквивалентно транзакциям SQL Server в DB2?

StackOverflow https://stackoverflow.com/questions/809136

  •  03-07-2019
  •  | 
  •  

Вопрос

Что эквивалентно следующим операторам SQL Server в DB2?

  • Начать транзакцию
  • Зафиксировать транзакцию
  • Откат транзакции
Это было полезно?

Решение

Видеть здесь для примера.Но в основном

BEGIN TRANSACTION
COMMIT TRANSACTION
ROLLBACK

Другие советы

Ответ на самом деле немного сложнее, чем указано здесь.Действительно, транзакции стандартизированы ANSI, а DB2 может поддержите их.

DB2 для z/OS может сильно отличаться от других вариантов (наиболее распространенными являются LUW, Linux-Unix-Windows).Рискуя скатиться к разглагольствованиям, это делает идею разговора о DB2 практически бессмысленной.Вы говорите о каком-то конкретном варианте базы данных IBM, но то, что работает в одной, может быть совершенно неработоспособно в другой.Я предполагаю, что какой бы вариант ни использовал ОП, это не был вариант z/OS, поскольку BEGIN TRANSACTION ответ был принят.

Для тех из вас, кто наткнулся на это, пытаясь использовать транзакции с DB2 z/OS, вот краткое изложение:DB2 для мэйнфреймов не имеет явных транзакций.Здесь нет BEGIN TRANSACTION или любую другую сопоставимую конструкцию.Транзакции начинаются неявно (обычно в документации это называется единицей работы) и фиксируются или откатываются явно (обычно — многие инструменты с графическим интерфейсом, такие как Toad, имеют функцию автофиксации, которая может время от времени подкрадываться к вам).

Из справочного руководства по SQL 9.1 z/OS (стр. 28;доступны на http://www-01.ibm.com/support/docview.wss?uid=swg27011656#manuals):

«Единица работы инициируется, когда инициируется процесс подачи заявки.Единица работы также инициируется, когда предыдущая единица работы заканчивается чем -то другим, чем окончание процесса подачи заявления.Единица работы заканчивается операцией коммита, полной операцией отката или окончанием процесса подачи заявки.Операция Commit или Oflback влияет только на изменения базы данных, внесенные в единицу работы, которую он заканчивает ».

Самое близкое, что вы можете получить при написании сценариев, — это вручную указать точку сохранения.

Они выглядят следующим образом:

 SAVEPOINT A ON ROLLBACK RETAIN CURSORS;

 UPDATE MYTABLE SET MYCOL = 'VAL' WHERE 1;

 ROLLBACK WORK TO SAVEPOINT A;

На первый взгляд они напоминают явные транзакции, но это не так.На самом деле это всего лишь моменты времени в рамках одной неявной транзакции.Для многих целей их может быть достаточно, но важно осознавать концептуальные различия.

enter image description hereЕсли вы используете IDE, например Intellij Idea (или другие), у вас нет возможности явно запустить транзакцию.Другими словами, вы не можете ввести «начать транзакцию» в консоли вашей IDE.

Но вы можете отключить «Автоматическую фиксацию» (и включить ее позже), а затем ввести «фиксация» или «откат» в консоли.

В IDEA также есть кнопка «фиксировать» и кнопка «откатить».Посмотрите прикрепленный дамп экрана.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top