соединение оракула Проверить ограничение

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


person John    schedule 03.04.2011    source источник
comment
Для какой версии Оракла? 10g+ поддерживает регулярные выражения...   -  person OMG Ponies    schedule 03.04.2011


Ответы (4)


Предполагая, что Oracle 10g+, вы можете использовать функциональность регулярных выражений Oracle в ограничении CHECK:

ALTER TABLE YOUR_TABLE
ADD CONSTRAINT col_regx CHECK REGEXP_LIKE(column_name,'^[[:digit:]]{1}[^$]*$')); 

Использованная литература:

person OMG Ponies    schedule 03.04.2011

Похоже, вам нужно использовать регулярные выражения Oracle. Полезную ссылку для требований к синтаксису для соответствующего ограничения IF можно найти ниже.

http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm

person Pepto    schedule 03.04.2011

Регулярное выражение будет выглядеть как ^\d[^$]*$

Я не знаю Oracle, так что простите меня, если это вам не поможет.

person John Sobolewski    schedule 03.04.2011

я бы сделал что-то вроде

ALTER TABLE YOUR_TABLE ADD CONSTRAINT col_regx CHECK (substr(column_name,1,1) между '0' и '9' и column_name не похоже на '%$%')

(не проверено, но, вероятно, быстрее, чем регулярное выражение)

person TTT    schedule 04.04.2011