Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Где поставить commit?  [new]
BBK
Member

Откуда:
Сообщений: 10
Речь идет о формс 6.

Добавляю несколько записей в таблицу. Есть триггер WHEN-VALIDATE-RECORD, который проверяет соответствует ли запись определенным правилам. Проверяет с помощью SELECTa из этой же таблицы.
Пример:
В таблице есть записи rec1 b rec2. Я добавляю rec3 и rec4. Обе эти записи подходят для правил таблицы. Но если бы в таблице была бы уже запись rec3, то rec4 пройти бы уже не должна.

Варианты решения:

1) Делать commit после каждой введенной записи. Как?
2) проверять не только таблицу, но и поля с текущими данными. Как?
3) ...

Спасибо.
26 июл 06, 13:59    [2928025]     Ответить | Цитировать Сообщить модератору
 Re: Где поставить commit?  [new]
va_kochnev
Member

Откуда:
Сообщений: 498
Можно проверочный SELECT поставить в триггер PRE-INSERT. Тогда перд вставкой rec4 запись rec3 уже будет в базе.
26 июл 06, 14:09    [2928145]     Ответить | Цитировать Сообщить модератору
 Re: Где поставить commit?  [new]
BBK
Member

Откуда:
Сообщений: 10
Попробовал. Не совсем то, что нужно. У меня commit на закрытие формы и он при закрытии формы и не дает вставить ни rec3 ни rec4. Но мне нужно, чтобы ещё при вводе rec4 он заругался.
Можно ли так?
26 июл 06, 14:56    [2928547]     Ответить | Цитировать Сообщить модератору
 Re: Где поставить commit?  [new]
raw
Member

Откуда:
Сообщений: 133
Если Вы хотите записать ВСЕ записи сразу (commit на закрытии), то можно после проверки записи делать POST, тогда Ваш проверочный Select их увидит.
26 июл 06, 15:08    [2928659]     Ответить | Цитировать Сообщить модератору
 Re: Где поставить commit?  [new]
va_kochnev
Member

Откуда:
Сообщений: 498
Можно попробовать в триггере WHEN-NEW-RECORD выполнить POST. Хотя не уверен, что forms это позволит. Проверять и читать документацию лень.
Или еще в какие-нибудь триггеры попытаться этот POST впихнуть. Главное добиться, чтобы после ухода с записи rec3 эта запись в таблицу легла хотя бы без COMMITа.

Можно еще поизвращаться с pl/sql-таблицей в пакете, куда складывать информацию о вводимых записях . А потом в WHEN-VALIDATE-RECORD анализировать. Но при многопользовательской работе этот вариант ненадежный.
26 июл 06, 15:11    [2928686]     Ответить | Цитировать Сообщить модератору
 Re: Где поставить commit?  [new]
contr
Member

Откуда:
Сообщений: 1909
Вопрос не к формам...
Такие вопросы время от времени возникают и неизменно приводят к длииинным дискуссиям :)
Вот, полюбуйтесь на одну из них
26 июл 06, 15:32    [2928876]     Ответить | Цитировать Сообщить модератору
 Re: Где поставить commit?  [new]
Sqaimes
Member

Откуда: Украина, Мариуполь
Сообщений: 443
BBK
1) Делать commit после каждой введенной записи. Как?

а что мешает тебе делать commit в WHEN-NEW-RECORD-INSTANCE?
26 июл 06, 16:14    [2929238]     Ответить | Цитировать Сообщить модератору
 Re: Где поставить commit?  [new]
BBK
Member

Откуда:
Сообщений: 10
Ничего не мешает. Именно то, что нужно. Спасибо :)
26 июл 06, 16:59    [2929627]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить