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

Действия бд: Delete

Действие таблицы Delete if... используется для выборочного удаления из таблицы. Это достигается путем выбора определенных узлов/полей в компонентах источника и адресата, которые должны сравниваться. Определенное действие таблицы в этом случае будет выполняться по результатам этого сравнения.

Это действие не путайте с опцией «Delete data in child tables» доступной в диалоге Table action. Действие таблицы Delete if... касается только тех таблиц, для которых оно определено, на другие таблицы оно не действует.

Цель:

  • Удалить существующие записи из таблицы Person;

  • Вставить новые записи из XML файла.

  1. Введите в отображение схему Altova_Hierarchical.xsd (и свяжите с altova-cmpy-extra.xml как входным XML-экземпляром);

  2. Введите БД altova.mdb.

  1. Выберите Connection | Auto Connect matching children.

  2. Щелкните узел Person на XML источнике и перетащите коннектор на узел Person БД. Убедитесь, что вы связались с корневой таблицей. Все дочерние узлы отображаются автоматически.

  3. Щелкните ПКМ на Person и выберите «Database Table Actions».

  4. Щелкните по выпадающему списку диалога Table action и выберите Delete if....

  5. Щелкните кнопку Append Action.

Это автоматически вставляет новую колонку Insert Rest действия таблицы.

PK XML и БД сравниваются оператором «equal». Если два ключа идентичны, то отображаемые поля таблицы Person удаляются. Как только это действие выполнено, начинается следующее действие, в нашем случае Insert Rest.

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

Щелкните по вкладке Output, чтобы увидеть псевдо-SQL код, выполняющий данное отображение.

  1. Щелкните по значку (Run SQL-Script) на ПИ, чтобы запустить скрипт и обновить данные таблицы в БД. Если скрипт успешно выполняется, появляется сообщение. Щелкните ОК для подтверждения.

  2. Откройте БД altova.mdb и дважды щелкните на Person, чтобы увидеть результат.

Таблица Person: условие Delete if... – true

  • Удаляются все записи, для которых ключи идентичны;

  • Если запись существует в БД, но в XML нет такой записи, то запись в БД не изменяется.

Таблица Person: условие Delete if... false

PK в исходном и целевом компоненте не идентичны, т.е в источнике ключ существует, а в целевой таблице соответствующих PK нет, поэтому условие delete if... – false:

  • Переходит к выполнению операции следующей колонки Table Action: Insert Rest....

  • Вставляет новые записи Person в таблицу Person, если они существуют.

В данном случае добавляются две новые записи в отдел Administration, с PK 30 и 31, соответственно.

Установки ключей бд

При отображении на БД MapForce позволяет вам определять как PK будет обработан. Три варианта, приведенные ниже, становятся доступны при щелчке ПКМ на поле PK.

Установка PK предназначена для действия таблицы, определенной для этой таблицы. Например, при вставке записей PK следует установить в «Maximum number», чтобы записи автоматически добавлялись к существующим.

Входной значок доступен только при выбранном «Default handling». Это позволяет отображать данные источника непосредственно на поля БД.

Default handling

Эта установка стандарт для всех полей БД.

  • Входной значок существует, когда эта опция выбрана; это разрешает отображать данные непосредственно;

  • Значение, поставляемое узлом источника, используется как ключевое значение в БД.

Maximum number

Используйте эту установку, когда вы хотите вставить записи в БД.

  • Входной значок недоступен, когда вы выбираете эту опцию.

  • Состояние запросов SELECT выполняется для максимального значения PK. Затем это значение увеличивается на 1 и вставляется в новое поле.

Database generated value

Используйте эту установку, когда БД генерирует/использует функцию Identity, чтобы генерировать ключевые значения, и вы хотите вставлять новые записи.

  • Входной значок недоступен, когда вы выбираете эту опцию.

  • Выбор состояния inserts отображает данные в БД, запросы БД для ключевого значения генерируется функцией Identity, и заносится в поле ключа.