Ответ на самом деле немного сложнее, чем указано здесь. Правда, транзакции стандартизированы ANSI, и DB2 может их поддерживать.
DB2 для z / OS может сильно отличаться от других вариантов (наиболее распространенным является LUW, Linux-Unix-Windows). Риск скатиться до разглагольствования делает идею говорить о DB2 практически бессмысленной. Вы говорите о каком-то конкретном варианте базы данных IBM, но то, что работает в одной, может быть совершенно неверным в другой. Я предполагаю, что любой вариант, который использовал OP, был не z / OS, так как ответ BEGIN TRANSACTION
был принят.
Для тех из вас, кто сталкивался с этой попыткой использовать транзакции с DB2 z / OS, вот краткое изложение: DB2 для мэйнфрейма не имеет явных транзакций. Нет BEGIN TRANSACTION
или любой другой сопоставимой конструкции. Транзакции начинаются неявно (обычно называемые единицей работы в документах) и фиксируются или откатываются явно (обычно - многие инструменты с графическим интерфейсом, такие как Toad, имеют функцию автокоммитирования, которая может время от времени подкрадываться к вам).
Из справочного руководства по 9.1 z / OS SQL (стр. 28; доступно по адресу http://www -01.ibm.com / support / docview.wss? Uid = swg27011656 # manual * ):
"Единица работы инициируется, когда начинается процесс подачи заявки. Единица работы
также инициируется, когда предыдущая единица работы заканчивается чем-то другим, кроме
конец процесса подачи заявки. Единица работы заканчивается операцией фиксации,
полная операция отката или завершение процесса приложения. Коммит или откат
операция влияет только на изменения базы данных, внесенные в единицу работы, которую она завершает. "
Самое близкое, что вы получаете при написании скриптов, - это вручную указывать точку сохранения.
Это выглядит так:
SAVEPOINT A ON ROLLBACK RETAIN CURSORS;
UPDATE MYTABLE SET MYCOL = 'VAL' WHERE 1;
ROLLBACK WORK TO SAVEPOINT A;
Внешне они напоминают явные транзакции, но это не так. Вместо этого они действительно являются точками времени внутри одной неявной транзакции. Для многих целей их может быть достаточно, но важно знать о концептуальных различиях.