Я создаю небольшую базу данных для телекоммуникационной системы.
В одной из таблиц (звонков) требуется, чтобы: если код зоны телефонного номера не содержался в заранее определенном списке, номер не добавлялся в таблицу.
То, как я думал об этом, - это установить ограничение проверки в таблице вызовов, чтобы не принимать числа, которые не являются частью этого упомянутого списка. Однако этот список довольно длинный, и я не слишком уверен, что будет лучший способ реализации.
Вот список:
01 or 02: local/national number. Ex.: 01612 338866.
075, 077, 078, 079: mobile phone number. Ex.: 07747 556647.
0800: free number. Ex.: 08002 223344.
0845, 0870: special service. Ex.: 08451 423456.
08442 to 08449: 5p special service. Ex.: 08444 404404.
08712 to 08719: 10p special service. Ex.: 08713 457893.
090, 091, 098: premium rate special service. Ex.: 09119 229595.
Единственный способ, которым я мог придумать, заключается в следующем:
ALTER TABLE calls ADD (CONSTRAINT area_ck
CHECK area_code ("01" or "02" or "075" or "077" or "078" or "079" or "0800" or
"0845" or "0870" or (BETWEEN ("08442" AND "08449")) or
(BETWEEN ("08712" AND "08719")) or
"090" or "091" or "098")
) ;
У меня есть две основные проблемы:
- выдает ошибку, поскольку реализовано неправильно
- Если бы я немного изменил его до тех пор, пока он не заработал, было бы еще долго пытаться решить мою задачу?