проблемы с CHECK

Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать

Модераторы: kdv, dimitr

Ответить
cooluser
Сообщения: 7
Зарегистрирован: 06 апр 2005, 23:59

проблемы с CHECK

Сообщение cooluser » 09 апр 2005, 00:50

Господа!

Использую Firebird 1.5.1.4481 под Win32.

Долгое время всё работало нормально, потом началась проблема вот какого свойства.

В одной из таблиц начали появляется значения, которым там делать нечего. Конкретно - есть две таблицы, одна справочник товаров, содержит товары с идентификаторами от 2001 до ... (в настоящее время примерно до 20000). Вторая таблица строчки фактуры, соответственно имеет поле куда записывается код товара из первой таблицы.

И вот начали появляться две-три записи за месяц в таблице строк с кодом товара что-нибудь вроде: 22, 12, или вообще 0. Глюк программы исключается, поскольку давно ничего не менялось в коде, который работает с этими таблицами.

Подумал я и решил ввести ограничение на поле с кодом товара в таблице строк:

Код: Выделить всё

alter table recs
add check(ridt>2000)
В таком виде система работает уже несколько дней.

Теперь уже дома начал дописывать в программу еще одну функцию, которая в массовом порядке добавляет данные в таблицу строк. И нарвался на ситуацию, когда срабатывает это ограничение. Взял в руки SQL Monitor чтобы посмотреть какие реально данные добавляются в таблицу - ПАТАЛОГИЙ не увидел. На запросе, где срабатывает ограничение ДАННЫЕ КОРРЕКТНЫЕ (например, ridt=2007).

Стал разбираться далее, удалил это ограничение с таблицы, еще раз запустил процесс добавления данных, посмотрел результат - всё значения ridt в границах допустимого.

Снова добавил ограничение (см.выше), и заново запустил процесс добавления данных. И что же! Процесс добавления данных отрабатывает на УРА! То есть там где раньше сратабатывало ограничение, после удаления и повторного добавления оно больше не срабатывает!

Что это было?

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 10 апр 2005, 10:27

Стук в подвале. Без живого наглядного примера ни фига не понять.

Ответить