Использую Firebird 1.5.1.4481 под Win32.
Долгое время всё работало нормально, потом началась проблема вот какого свойства.
В одной из таблиц начали появляется значения, которым там делать нечего. Конкретно - есть две таблицы, одна справочник товаров, содержит товары с идентификаторами от 2001 до ... (в настоящее время примерно до 20000). Вторая таблица строчки фактуры, соответственно имеет поле куда записывается код товара из первой таблицы.
И вот начали появляться две-три записи за месяц в таблице строк с кодом товара что-нибудь вроде: 22, 12, или вообще 0. Глюк программы исключается, поскольку давно ничего не менялось в коде, который работает с этими таблицами.
Подумал я и решил ввести ограничение на поле с кодом товара в таблице строк:
Код: Выделить всё
alter table recs
add check(ridt>2000)
Теперь уже дома начал дописывать в программу еще одну функцию, которая в массовом порядке добавляет данные в таблицу строк. И нарвался на ситуацию, когда срабатывает это ограничение. Взял в руки SQL Monitor чтобы посмотреть какие реально данные добавляются в таблицу - ПАТАЛОГИЙ не увидел. На запросе, где срабатывает ограничение ДАННЫЕ КОРРЕКТНЫЕ (например, ridt=2007).
Стал разбираться далее, удалил это ограничение с таблицы, еще раз запустил процесс добавления данных, посмотрел результат - всё значения ridt в границах допустимого.
Снова добавил ограничение (см.выше), и заново запустил процесс добавления данных. И что же! Процесс добавления данных отрабатывает на УРА! То есть там где раньше сратабатывало ограничение, после удаления и повторного добавления оно больше не срабатывает!
Что это было?