Транзакция, 9 д о ст уп к таб л иц ам с sql- инстр укциями – Инструкция по эксплуатации HEIDENHAIN TNC 320 (340 55x-03)
Страница 416
416
10 Программирование: Q-параметры
10.9
Д
о
ст
уп
к
таб
л
иц
ам
с
SQL-
инстр
укциями
Транзакция
Транзакция состоит, главным образом, из операций:
присвоения таблице (файлу) адреса, выбора строк и передачи
в набор результатов.
считывания строк из набора результатов, изменения и/или
включения новых строк.
завершения трансакции. В случае изменений/дополнений
строки из буфера набора результатов переписываются в
таблицу (файл).
Тем не менее, требуются дальнейшие операции, для того, чтобы
обработать данные таблицы в NC-программе и избежать
параллельного изменения одних и тех же строк таблицы.
Поэтому, возникает следующий порядок транзакции:
1 Для каждого столбца, который должен обрабатываться,
обозначается Q-параметр. Этот Q-параметр присваивается
столбцу – он „присоединяется“ (SQL BIND...).
2 Присвоение адреса таблице (файлу), выбор строк и передача
в буфер Result-set. Следует дополнительно определить, какие
столбцы следует передавать в буфер набора результатов
(SQL SELECT...).
При этом можно заблокировать выбранные строки. Тогда
другие процессы, хотя и будут доступны для чтения этих строк,
но не смогут изменить введенные в таблицу данные. Следует
всегда блокировать выбранные строки, если были
произведены изменения (SQL SELECT ... FOR UPDATE).
3 Считывание строк из буфера набора результатов, изменение
и/или включение новых строк:
– переписывание строки буфера набора результатов в Q-
параметры NC-программы (SQL FETCH...)
– подготовка изменений в Q-параметрах и передача в строку
буфера набора результатов (SQL UPDATE...)
– подготовка новой строки таблицы в Q-параметрах и
передача в качестве новой строки в буфер набора
результатов (SQL INSERT...)
4 Завершение транзакции.
– Записи в таблицах подвергались изменениям/дополнялись:
данные из буфера набора результатов переписываются в
таблицу (файл). Сейчас они сохраняются в файле. Возможная
блокировка отменяется, буфер Result-set освобождается (SQL
COMMIT...).
– Записи в таблицы не изменялись/дополнялись (доступ
только для чтения): возможная блокировка удаляется, буфер
набора результатов освобождается для пользователя (SQL
ROLLBACK... БЕЗ ИНДЕКСА).
Можно обрабатывать несколько транзакций параллельно.
Следует обязательно закончить начатую транзакцию –
даже при использовании исключительно доступа для
чтения. Только тогда можно обеспечить сохранение
изменений/дополнений, избежать отмены блокировки
и освобождения буфера набора результатов.