Как предотвратить выбросы в базу данных? - PullRequest
0 голосов
/ 13 марта 2009

У меня есть MS SQL DB содержит набор таблиц, каждая таблица представляет собой набор переменных, рассчитанных на основе наших формул. Все переменные являются числовыми с предопределенным разрешением (мы используем числовой тип данных с n.m в качестве n цифр для целой части и m чисел для дробной части).

Мой вопрос: как предотвратить выбросы или недопустимые значения, которые нарушают размер столбцов? В настоящее время мы выполняем простую попытку try catch, поскольку ADO.net создает исключение для недопустимых значений, есть ли лучший способ? Кроме того, я хочу установить допустимое значение в этом столбце (то есть: может быть ноль) для этого выброса. Я использую C # 3, MSSQL 2000 и вставляю, используя SqlBulkCopy класс.

P.S .: Я спрашиваю о каком-либо решении со стороны БД или со стороны дотнет

Ответы [ 3 ]

1 голос
/ 30 апреля 2009

Я должен был бы согласиться с MartinK и поставить шаг проверки перед вашей массовой вставкой данных. Это позволит вам лучше тестировать этот процесс.

Если у вас есть несколько приложений, добавляющих данные в эту таблицу, хранимая процедура может быть другим решением для обеспечения ваших проверок.

Но, другой вариант - сделать массовую вставку во временную / необработанную таблицу, которая имеет более мягкое ограничение для ваших типов данных, чем использовать TSQL для массирования этих записей в основную таблицу.

0 голосов
/ 30 апреля 2009

Вы описываете логику валидации и обработки исключений, которую я ожидаю найти в дизайне приложения, а не в дизайне базы данных. Почему это не кажется самым легким местом для вас? Какой тип DAL вы используете?

0 голосов
/ 13 марта 2009

Вы можете попытаться написать триггер / последовательность PSQL, которые проверяют ваши отношения типов данных!

Сколько приложений работают с одними и теми же данными в базе данных? Если это только ваше приложение, вам не следует думать о переносе логики исключений из среднего уровня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...