Re: Транзакции | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
Надо полагать, of63 предлагает перейти с Oracle на древний MySQL. |
Re: Транзакции | |
---|---|
Владимир Максимов Сообщений: 14097 Откуда: Москва Дата регистрации: 02.09.2000 |
Еще один "детский" вопрос: А по каким полям ты проверяешь, что данные до/после изменения?
У тебя в псевдокоде
А остальные поля? Т.е., может с одним единственным полем все хорошо, но остальные вообще не изменялись? Ну, и проверять все-таки надо из одного места. Если вставка через VFP, то и проверку надо делать в VFP
Кстати, а вставка записей в новую таблицу вообще была? Если триггер сам меняет id, то, может, просто вообще ничего не было вставлено в tab2 и ты тупо смотришь на старые данные. Хотя бы количество записей сравнить можно до и после вставки? Есть еще предположение по автоконвертации типов данных, если структура полей новой и старой таблиц отличаются. Ну, например, длинная строка автоматически обрезается. Не знаю, какое правило действует в Oracle в случае, если типы данных не могут быть автоматически приведены к нужному типу. Что чисто внешне, может быть принято за запись "старых" данных. Но это на знать структуру таблиц и какие именно значения "старые" и какие "новые" и по каким правилам в Oracle выполняется приведение типов |
Re: Транзакции | |
---|---|
of63 Сообщений: 25244 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
() Предложил убрать в коде все упоминания о транзакциях, оставить только сами селекты и инсерты, Оракел сам, "автоматически", что-то там автопотранзактирует. Этим мы проверим код коровкиных собственно селектов и инсертов! Исправлено 1 раз(а). Последнее : of63, 10.01.21 19:56 |
Re: Транзакции | |
---|---|
Божья_коровка Сообщений: 25731 Дата регистрации: 23.08.2001 |
Ну я делаю через интерфейс изменение нескольких полей, загоняю данные, например 'test1', 'test2' в несколько полей, плюс проверяю айдишник изменений. Т.е. при апдейте MyTable, формируется каждый раз новый айдишник. Да итак тоже проверяла. Запись всегда одна. Одна запись в таблице MyTable меняется и она же одна и добавляется в Table2. Триггер меняет только "айдишник изменения записи", у записи несколько айдишников.В таблицу table2 запись вставляется, но с предыдущими данными, т.е. не с 'test1', 'test2'. Т.е. система такая, изменила проца данные в записи с айди=1, значения полей, и эта же запись обновленная с айди=1 вставляется в table2. Т.е. одно изменение (один апдейт) одной записи в MyTable = одна вставка одной записи в table2. Они отличаются, только одним полем. В table2 есть поле, которого нет в MyTable. Но в транзакции я специально делаю перечисление полей, которые нужно вставить и типы данных и наименование перечисленных полей идентичны в обоих таблицах. ------------------ Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается... Исправлено 2 раз(а). Последнее : Божья_коровка, 10.01.21 20:16 |
Re: Транзакции | |
---|---|
Божья_коровка Сообщений: 25731 Дата регистрации: 23.08.2001 |
Если делать без всего без этого будет чистый лист. Если не рождаться, то и не умирать, т.е. если не жить, то и проблем и странностей не будет. Если послать простой инсерт напрямую, на основе переменных, то всё прекрасно, такой странности не наблюдается. Я же писала выше, что прописала как раз такой вариант, когда тяну на клиента простым селектом эту запись из MyTable, обрабатываю типы, загоняю в переменные и делаю прямой инсерт с values(перечисление переменных) и всё отлично работает. Т.е. подобная странность происходит только с инсертом на основе селекта, а не простым инсертом. Вот, я писала выше - Цитата: ------------------ Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается... Исправлено 4 раз(а). Последнее : Божья_коровка, 10.01.21 20:19 |
Re: Транзакции | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Я и предлагаю сделать тест вида
update tbl1 ... / insert into tbl1 ... не суть важно, абы данные "до и после" чётко различались. commit insert into tbl2 ... select ... from tbl1 без дополнительных условий - ВСЕ записи перегнать. commit смотреть tbl2 - и из фокса и из сторонней утилиты. если это сработает как положено - вот тогда изучать код ХП, триггера, собственно фоксовый код вокруг этого самого "id записи". Заодно строку подключения проверить - если драйвер оракловский, там целая куча самых разных параметров имеется. А если MS - то искать по форумам на предмет проблем с оным - с разными типами данных в частности (может он твой id передаваемый из фокса в условии округляет/обрезает/перекодирует - ты даже не упомянула какого типа это поле). ------------------ WBR, Igor |
© 2000-2024 Fox Club  |