Выходные параметры, используемые при обновлении проблемы CASCADE, при использовании адаптеров данных - PullRequest
1 голос
/ 11 мая 2011

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

Я добавил последовательности в операторы вставки и изменил параметр PK на выходные параметры, чтобы он обновлял строку набора данных и, таким образом, обновлял также все дочерние строки (с помощью правила UPDATE CASCADE). Проблема в том, что дочерние строки, которые до того, как в обновлении было добавлено состояние строки, изменяются на состояние изменения (я не согласен, что это даже должно происходить, конечно, добавленная строка должна оставаться добавленной, даже если она модифицирована!). Таким образом, когда мы возвращаемся к обновлению дочерней таблицы с дочерними строками, она терпит неудачу как ожидающие строки с добавленным состоянием.

Каким самым чистым способом я мог обойти эту проблему? Потенциальные решения, которые я могу придумать:

  • После отключения UPDATE CASCADE и обновления каждой дочерней строки вручную, обновления родительского PK и изменения каждой строки обратно на добавленную после ее изменения.
  • Создание копии всех добавленных строк во всех таблицах набора данных перед началом обновлений, а затем обновление основной копии после обновления каждой таблицы, отмечая все правильные строки обратно добавленными.

Есть идеи получше?

...