Скажем, я хочу разрешить в столбце таблицы только строки, которые начинаются с цифры и не должны содержать «$». Как будет выглядеть проверочное ограничение для этой таблицы?
соединение оракула Проверить ограничение
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}[^$]*$'));
Использованная литература:
- http://www.dba-oracle.com/t_regular_expressions_constraints_updates_columns.htm
- http://psoug.org/reference/regexp.html
- http://www.techonthenet.com/oracle/check.php
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