Форум: "Базы";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
ВнизКак на поле в таблице установить ограничение Найти похожие ветки
← →
ZemA (2003-11-04 14:23) [0]Задача такая, есть поле INN, нужно что-бы в него можно было ввести только 7 цифр.
Я знаю что при создании таблици нужно установить check на поле.
Но какую надо задать маску?
← →
Johnmen (2003-11-04 14:36) [1]CHECK (VALUE LIKE "_______")
← →
ZemA (2003-11-04 16:25) [2]
> Johnmen © (04.11.03 14:36) [1]
> CHECK (VALUE LIKE "_______")
Так не пойдет. Тип поля char, а значение должно состоять из цифр.
Например: "1234567".
← →
Sandman25 (2003-11-04 16:40) [3]В IB есть что-нибудь типа matches "[0123456789][0123456789][0123456789][0123456789][0123456789][0123456789][0123456789]"?
← →
mOOx_ (2003-11-04 16:42) [4]Пиши УДФ, чтоб булеан возвращала. И что-то типа
CHECK MY_UDF(VALUE).
ЗЫ: вышеизложенное есть преположение и никак не притендует на истинность. Просто предположил :)
← →
mOOx_ (2003-11-04 16:43) [5]Хотя может и глупость сказал. Булеан веть нет в ИБазе :(
← →
Sandman25 (2003-11-04 16:44) [6]Можно и триггер с проверкой попробовать прицепить.
← →
Zacho (2003-11-04 16:53) [7]
> mOOx_ © (04.11.03 16:43) [5]
Нет, не глупость. Boolean без проблем эмулируется любым другим типом данных, например INTEGER. Кстати, в IB7 есть boolean.
2 ZemA: Пиши UDF. Или триггер BEFORE INSERT / BEFORE UPDATE с попыткой преобразовать значение поля в INTEGER.
← →
mOOx_ (2003-11-04 17:03) [8]2Zacho ©: поясни, пожалуйста, как можно попытаться преобразовать значение поля в интегер? Ну, в смысле, понятно, как, но вот как обработать сам факт того, что преобразование завершилось неудачей. К тому же это не как не решит проблему 7-и символов :).
Мне кажется, что только УДФ. При этом ее можно и в триггер и в процедуру и в чек... Вообщем...
Удачи.
← →
Zacho (2003-11-04 17:09) [9]
> mOOx_ © (04.11.03 17:03) [8]
Решение проблемы 7-ми симвлолов - Johnmen © (04.11.03 14:36) [1], или примерно тоже самое в триггере с вызовом Exception
Пытаться пребразовать в integer - CAST(NEW.MY_FIELD AS INTEGER), обработка исключения - WHEN, а можно и не обрабатывать, если в триггере BEFORE INSERT или BEFORE UPDATE произойдет исключение, то текущая операция отмениться.
← →
Johnmen (2003-11-04 17:12) [10]>mOOx_ © (04.11.03 17:03)
Попытаться можно CAST"ом.
Если неудача, то будет возб Уждено исключение...:)))
Но, безусловно, UDF лучшее...
← →
Johnmen (2003-11-04 17:15) [11]>Zacho © (04.11.03 17:09)
Синхронизация продолжается...:))))))
← →
}|{yk (2003-11-04 17:18) [12]Не понял. 7 цифр или 7 любых символов? Если 7 цифр, то делай CAST а потом проверяй меньше ли число 10000000 (хотя зачем цифровому полю делять тип char?). 7 символов - так делай длину поля 7
← →
mOOx_ (2003-11-04 17:27) [13]Слыште, а веть Жук дело говорит :)
← →
Zacho (2003-11-04 17:31) [14]
> Johnmen © (04.11.03 17:15) [11]
Ага :))
← →
ZemA (2003-11-06 07:20) [15]
> }|{yk © (04.11.03 17:18) [12]
> Не понял. 7 цифр или 7 любых символов? Если 7 цифр, то делай
> CAST а потом проверяй меньше ли число 10000000 (хотя зачем
> цифровому полю делять тип char?). 7 символов - так делай
> длину поля 7
Значение поля может быть "0000001" и если полю сделать числовой тип, то в итоге получится 1 а надо "0000001".
В Paradox 7 я делаю маску *7{#} на поле типа Alpha и могу ввести в поле только 7 цифр.
← →
Zacho (2003-11-06 07:53) [16]
> ZemA (06.11.03 07:20) [15]
Ну а в IB тебе придется или написать триггера BEFORE INSERT и BEFORE UPDATE, либо написать UDF и сделать на поле CHECK CONSTRAINT
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c