Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.022 c
1-78956
boby_g
2003-11-11 21:58
2003.11.24
Функция Pos с параметром BegPos???


1-79049
Татьяна
2003-11-13 14:38
2003.11.24
Найти компоненту


3-78792
DimChan
2003-11-05 13:25
2003.11.24
TTable


3-78773
stud
2003-11-05 15:22
2003.11.24
отчет - как много в этом звуке!


1-78885
Виталя
2003-11-12 16:25
2003.11.24
Прочитать из Word при помощи OLE




   Наверх