Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.24;
Скачать: CL | DM;

Вниз

Как на поле в таблице установить ограничение   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
4-79238
SH
2003-09-25 19:25
2003.11.24
Не работает enumprocesses


1-79052
Князев Сергей
2003-11-12 12:58
2003.11.24
Проблема с TRxRichEdit


3-78843
DimChan
2003-11-04 08:01
2003.11.24
Импорт(копия) таблицы


1-78916
killer
2003-11-12 16:10
2003.11.24
Где можно скачать RXLib для Delphi7


8-79063
9351561
2003-07-20 01:31
2003.11.24
Как определить время