![]() |
|
Модераторы: Akella |
![]()
|
|
| Гость_Сергей |
|
|||
|
Unregistered |
IB 7.5. Саму базу создаю с помощью IBExpert 2005.01.30. Приложение на Delphi через IB-компоненты.
Пока только один триггер со счетчиком на PK главной таблицы. Сначала все работало нормально. Но с какого-то момента (не уследил, с чего началось), в приложении стала возникать ошибка, что не заполнено поле PK. При этом, если добавлять запись в Эксперте, то все работает на ура, т.е., заполняю неключевые поля и триггер сам заносит значение по счетчику. Самое интересное, что попробовал добавить запись через консоль IB - появлялась та же ошибка. А еще, вдобавок, начал ругаться на незаполненность полей со значениями по умолчанию, но для которых установлено NOT NULL. Чего это такое может быть? |
|||
|
||||
| AZDesign |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 24.6.2005 Репутация: нет Всего: нет |
А ты бы привел описание таблицы и триггера - можно было бы разобратся
|
|||
|
||||
| Гость_Сергей |
|
|||
|
Unregistered |
Где-то так:
Еще есть таблица с FK, связанным с PK этой. Но я FK удалял, т.е. делал таблицы независимыми - ситуация ни сколько не поменялась. Backup/Restore тоже погоды не сделали. А каков там вообще механизм обработки событий в триггерах? Если у меня на поле check установлен и триггер с очередностью - 0. Check'у тоже по умолчанию нулевая очередность присваивается, и ее нельзя менять. Так если я запись добавляю, и не заношу значение в поле, то что произойдет сначала - сработает триггер, или выругается check? Или это от алфавитного порядка имен обоих зависит? А то у меня была ситуация, когда такая вот совокупность оказалось неработоспособной. А затем - все сам-собой чудесным образом исправилось. А теперь, похоже, вообще, значение поля сначала проверяется, а затем уже производится попытка задать умолчание (хотя, последнее проверить невозможно). Но под Экспертом все работает как и должно. |
|||
|
||||
| Гость_Сергей |
|
|||
|
Unregistered |
Все! Разобрался!
Это не IB ругается, а Delphi. Точнее, модуль IBTable. Когда в нем изначально поля создаются, то тем, у которых в БД установлен NOT NULL, флаг Requered по умолчанию устанавливается в True. Если же это поле не включать в список доступных через IBTable, или установить его Requered в False, то все начинает работать. Еще, вместо Requered = False можно задать ReadOnly = True для этого поля. Тогда IBTable так же понимает, что требовать ввода данных бесполезно, и возлагает все проверки на IB. А вот что консоли не нравится - не знаю. Но это уже не актуально |
|||
|
||||
![]()
|
| Правила форума "Interbase" | |
|
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |