![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Триггер не ловит Null вроде [D6, IB6.x]
Vemer © (2004-01-03 17:24:00)
Здравствуйте.
Есть таблица с двумя полями, POLE(Int) и Ctrl(SmallInt) и триггер Before Update типа:
IF (new.Pole <> old.Pole) then
new.ctrl = old.Ctrl + 1
То есть триггер отмечает в CTRL изменения POLE, но путем несложных экспериментов я установил, что триггер не ловит изменения с NULL и на NULL.
В принципе это можно победить, забивая в поле изначально какие-то значения.
Вопрос - можно ли это победить как-нибудь проще, по другому.
Vemer (2004-01-04 15:10:00) [1]
Спасибо за пример, где-нибудь пригодиться (хотя проще будет поставить Default какой-нибудь).
Для 12 полей будет громоздко(IMHO), а запихивать "Нет" в телефоны и адреса навряд-ли придеться + с "нет" даже лучше смотриться. Хотя "громоздко" понятие тоже растяжимое.
Jack128 (2004-01-04 06:30:00) [2]
> просто сделал надпись "нет" когда нет значения
Не есть это хорошо. Вдруг нужно будет в базу слово "нет" запихнуть ;-)
А вообще в чем проблема, то?
Сложно вместоIF (new.Pole <> old.Pole) then
написать
if ((new.Pole is null and old.Pole is not null) or
(new.Pole is not null and old.Pole is null) or
(new.Pole <> old.Pole)) then
Vemer (2004-01-03 23:37:00) [3]
Всем спасибо.
Триггер слишком громоздкий получаеться (проверка 3-х условий).
Поля текстовые, шифрованные, заполняються не напрямую поэтому просто сделал надпись "нет" когда нет значения.
Rad (2004-01-03 20:35:00) [4]
Надо проверять
new.Pole IS NULL
jack128 (2004-01-03 17:40:00) [5]
Тригер, то ловит, не ловит твое условие.
(null <> 10) - это false