![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Используя ЗАБОЙ, полю присваивается NULL, а хотелось бы НОЛЬ [IB6.x, FB]
q-q © (2006-06-06 10:07:00)При удалении цифры используется Забой => Полю присваивается NULL, а хотелось бы НОЛЬ. Устанавливать NOT NULL полю не хотелось бы (удалять инф-цию удобней Забоем, а не НУЛЕМ). Триггер на update (if f.new is null then f.new=0) по каждому числовому полю тоже нехорошо.
Подскажите, как решить оптимальнее на уровне базы.
Sergey13 (2006-06-06 10:29:00) [81]2[8] q-q (06.06.06 10:24)
Вошебства не бывает. "Триггер на update (if f.new is null then f.new=0)" нормальный и самый правильный выход.
Johnmen (2006-06-06 10:29:00) [82]Объявить поле с NOT NULL DEFAULT 0
q-q (2006-06-06 10:24:00) [83]Хотелось бы при присваивании полю значения NULL, чтобы оно становилось НУЛЕМ. История про ЗАБОЙ рассказана только для пояснения ситуации, почему такая необходимость возникла.
Сергей М. (2006-06-06 10:21:00) [84]
> q-q (06.06.06 10:16) [4]
>
> А на уровне базы
Это и есть "на уровне базы".
Если же речь идет о стороне сервера, то без явного перебора полей в триггере не обойтись.
Впрочем, в FB можно выкрутиться с пом. EXECUTE STATEMENT и прямым обращением к сист.таблицам, но решение не будет совместимо с IB
Polevi (2006-06-06 10:20:00) [85]триггер
Ega23 (2006-06-06 10:19:00) [86]
> А на уровне базы
А где ты видел Backspase | Delete на уровне базы???
q-q (2006-06-06 10:16:00) [87]А на уровне базы
Сергей М. (2006-06-06 10:15:00) [88]на стороне клиента в обработчике TDataSet.OnBeforePost() пройтись в цикле по полям дейтасета, для каждого поля типа TIntegerField проверить условие IsNull(Value) и если Истина, то тут же присвоить Value = 0
q-q (2006-06-06 10:12:00) [89]"ЗАБОЙ" = Backspase | Delete
Ega23 (2006-06-06 10:10:00) [90]Что такое "Забой"???????????