Отмена изменений в транзакции с SQL ROLLBACK

Применение

SQL ROLLBACK отменяет все изменения и дополнения в рамках запроса. Запрос определяется через указываемый HANDLE.

Условия

  • Введено кодовое число 555343
  • Таблица существует
  • Подходящее имя таблицы
  • Имена таблиц и столбцов должны начинаться с букв и не должны содержать математические символы, например +. Наличие подобных символов может вследствие особенности SQL-команд привести к проблемам при чтении и записи данных.

Описание функций

Черные стрелки и соответствующий синтаксис показывают внутренние процессы SQL ROLLBACK. Серые стрелки и относящийся к ним синтаксис непосредственно не относятся к команде SQL ROLLBACK.

Функция SQL-команды SQL ROLLBACK зависит от INDEX:

  • Без INDEX:
    • Система ЧПУ отменяет все изменения и дополнения в рамках запроса
    • Система ЧПУ сбрасывает установленную с помощью SELECT...FOR UPDATE блокировку
    • Система ЧПУ закрывает запрос (HANDLE утрачивает своё значение)
  • С INDEX:
    • Только указанная строка остаётся в Result-set (система ЧПУ удаляет все остальные строки)
    • Система ЧПУ отменяет все возможные изменения и дополнения в не заданных строках
    • Система ЧПУ блокирует только указанные в SELECT...FOR UPDATE строки (система ЧПУ отменяет все другие блокировки)
    • Указанная строка становится новой строкой 0 Result-set
    • Система ЧПУ не закрывает запрос (HANDLE остаётся действительным)
    • Необходимо последующее завершение запроса при помощи SQL ROLLBACK или SQL COMMIT

Ввод

11 SQL ROLLBACK Q1 HANDLE Q5 INDEX 5

; Удалить все строки транзакции Q5 кроме строки 5

Функция ЧПУ содержит следующие элементы синтаксиса:

Элемент синтаксиса

Значение

SQL ROLLBACK

Открыватель синтаксиса для команды SQL ROLLBACK

Q/QL/QR или Q REF

Переменная, в которой система ЧПУ сохраняет результат

HANDLE

Q-параметр с идентификатором транзакции

INDEX

Номер строки внутри набора результата как число или переменная, которая остаётся

Без спецификации система ЧПУ отменяет все изменения и дополнения в рамках транзакции

Необязательный элемент синтаксиса

Пример

11 SQL BIND Q881 "Tab_Example.Position_Nr"

12 SQL BIND Q882 "Tab_Example.Measure_X"

13 SQL BIND Q883 "Tab_Example.Measure_Y"

14 SQL BIND Q884 "Tab_Example.Measure_Z"

* - ...

21 SQL Q5 "SELECT Position_Nr,Measure_X,Measure_Y, Measure_Z FROM Tab_Example"

* - ...

31 SQL FETCH Q1 HANDLE Q5 INDEX+Q2

* - ...

41 SQL ROLLBACK Q1 HANDLE Q5