Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные 3-4.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.72 Mб
Скачать

Действия таблиц бд и обработка транзакций

Действия таблицы позволяют вам определять, как определенные данные таблицы должны манипулироваться. MapForce в настоящее время поддерживает следующие действия: INSERT, UPDATE и DELETE.

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

Диалог Table actions позволяет вам определять:

  • Поля, которые будут сравниваться (т.е. PK);

  • Операции, используемые для сравнения (equal, equal ignore case);

  • Действие, которое выполняется, когда все условия каждого столбца выполнены.

Источником данных могут быть: XML файл, EDI сообщение, БД, текст, компонент Constant и т.д. Отображения, которые определяют, какие данные обрабатываться, созданы с использованием коннекторов в окне Mapping.

  • Действия таблицы обрабатываются слева направо. В примере, приведенном выше, сначала обрабатывается колонка Update if..., а затем Insert Rest....

  • Все условия колонки должны быть выполнены, для того чтобы действие таблицы было выполнено. Когда дело обстоит так, все поля, для которых определено отображение, модифицированы, т.е. в окне Mapping между узлами источника и адресата существуют коннекторы.

  • Если условие не удовлетворяется, то действие таблицы для этой колонки игнорируется и обрабатывается следующая колонка.

  • Если ни одно условие не удовлетворяется, то действия не выполняются.

Delete data in child tables

  • Установка стандартна, когда вы выбираете действие Update if....

  • Необходимо, если номера записей в файле источника могут различаться от номеров записей в целевой БД.

  • Помогает сохранить целостность БД (не допускает наличие записей-сирот в дочерних таблицах).

Эффект:

  • Условие удовлетворяется, когда соответствующий ключ (или другое поле) существует в исходном XML файле. Все дочерние данные родительской таблицы должны быть удалены.

  • Update if...выбирает родительскую таблицу, и таким образом, дочерние таблицы, связанные с ней, для которых предназначена опция «Delete data in child tables».

  • Если условие обновления (на родителе) не удовлетворяется, т.е. не существуют соответствующие ключи/поля в исходном XML файле, то дочерние данные не удаляются.

  • Наличие записей БД, для которых нет соответствующих записей в исходном XML файле, то такие записи не меняются.

Ignore input child data

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

  • Определите условие Update if... для обновления существующих записей.

  • Активизируйте check box Ignore input child data колонки Update if..., для игнорирования связанных дочерних записей.

  • Определите условие Insert Rest... для любых новых записей, которые должны быть вставлены.

Use Transactions

Переключатель «Use Transaction» позволяет вам определить то, что должно случиться, если действие БД по какой-либо причине не выполняется. Когда случается такое исключение (exception) открывается диалоговое окно, снабжающее вас дополнительной информацией о дальнейших действиях. Затем вы выбираете определенную опцию и нажимаете ОК, для продолжения.

Активизация этой опции для определенной таблицы (использующей диалоговое окно Table action), обеспечивает откат действий этой таблицы при возникновении исключений.

Установка опции No Transaction

Если опция «Use Transaction» не активизизирована в диалоге Table options, или в установках компонента, и возникает ошибка:

  • Выполнение останавливается в точке возникновения ошибки. Все предварительно выполненные SQL-запросы сохранены в БД как on-true.

Установка опции Transaction на уровне компонента БД

Выполнение останавливается в точке, где возникла ошибка. Все предварительно выполненные SQL откатываются.

Установка опции Transaction на уровне диалога Table Actions

Появляется диалог Transaction exception с неактивной опцией «Rollback all and stop». ошибочное состояние SQL может быть прокручено обратно.

Установка опции Transaction как на уровне компонента БД, так и на уровне Table Actions

Появляется диалог Transaction exception с неактивной опцией «Rollback all and stop». ошибочное состояние SQL для БД и всех ее таблиц может быть прокручено обратно.

Нажатие кнопки Cancel откатывает назад текущую SQL и останавливает ее выполнение.