![]() |
|
Модераторы: Akella |
![]()
|
|
| Гость_Сергей |
|
|||
|
Unregistered |
IB 7.5, приложение на Delphi черех IBX.
Как работает механизм значений по умолчанию для полей IB? Если в таблице поле, для которого задано NOT NULL и значение по умолчанию, то каким образом это значение заносится? 1) При получении команды на фиксацию изменений записи от приложения, IB, в случае наличия в таком поле NULL, сама заменяет его на прописанное по умолчанию значение? 2) Или IB предварительно, по запросу, передает приложению это значение, и уже потом требует от него возврата конкретного, не NULL значения? Связываю с таблицей компонет Delphi IBTable. В полях, для которых заданы значения по умолчанию и NOT NULL, сбрасываю флаг Requered (иначе IBTable будет требовать занесения значений в эти поля). В таблице приложения заношу в поля значения, и оставляю нетронутыми поля, для которых в БД установлены значения по умолчанию. При попытке фиксации новой записи, выдается ошибка от IB, что значение не может быть NULL. Еще пробовал играть со свойствами полей IBTable - DefaultExpression, BlanksToNULL и AutoGeneratedValue. Но к желаемому результату так и не пришел Почитал немного описание IBTable, и наткнулся на упоминания о том, что вроде как сначала необходимо запросить у IB (Refresh, AutoRefresh) эти вот значения по умолчанию, указанные в описании таблицы, а затем передавать их вместе с записью. Так как же все-таки заставить работать значения по умолчанию? |
|||
|
||||
| Гость_Сергей |
|
|||
|
Unregistered |
Или IBTable вне зависимости от заполненности полей посылает всегда INSERT с полным списком полей и VALUES?
Тогда для чего нужны свойства BlanksToNULL и AutoGeneratedValue? И почему никак не работает DefaultExpression? |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 7 Всего: 162 |
Модератор: Пожалуйста, один топик - один вопрос.
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| SergeBS |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: нет Всего: 22 |
Каша у тебя в голове
Пусть поле def0 - по умолчанию = 1 insert into tbl (a,b,def0) values ( 3,5,2) присвоит def0 значение 2. insert into tbl (a,b) values ( 3,5) - def0 получит значение по умолчанию = 1. Все корректно. Nul - not Null тут не при чем. Либо присваиваешь значение величине в новой записи, либо нет. А уже при коммите - есть присвоенное значение или нет. Hint: если ты не присвоил переменной значение, это не значит, что ты присвоил ей Null. Допустим ты ничего не присвоил. Тогда если может быть null - останется null. Есть default -> default. Not null и нет default - получишь по мордам от сервака, что должен был что-то присвоить, что - он без понятия, а не присвоил. С прочим разберемся позже. Я домой пошел. |
|||
|
||||
![]()
|
| Правила форума "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. |