Как правильно использовать REGEXP_LIKE в ограничении - PullRequest
0 голосов
/ 17 марта 2020

Я хочу использовать ограничение, которое требует, чтобы ввод был 'SUB', за которым следовали 4 цифры Пока что это то, что я получил, но выдает эту ошибку.

CREATE TABLE subscriptionsTable(
subID number PRIMARY KEY,
channelID number,
userID number,
subStartDate DATE NULL, 
subEndDate DATE NULL,
subCode VARCHAR(10) NOT NULL,
CONSTRAINT c_subCode (check REGEXP_LIKE(subCode,['SUB{3}[0-9][0-9][0-9][0-9]'))
);

ERROR at line 8:
ORA-00904: : invalid identifier

1 Ответ

1 голос
/ 17 марта 2020

Существует синтаксическая проблема в ограничении CHECK, и ваш шаблон регулярного выражения нуждается в небольшом изменении.

Вам нужен следующий код:

CREATE TABLE SUBSCRIPTIONSTABLE(
    SUBID          NUMBER PRIMARY KEY,
    CHANNELID      NUMBER,
    USERID         NUMBER,
    SUBSTARTDATE   DATE NULL,
    SUBENDDATE     DATE NULL,
    SUBCODE        VARCHAR(10) NOT NULL,
    CONSTRAINT     C_SUBCODE
CHECK ( REGEXP_LIKE ( SUBCODE, '^(SUB)[0-9]{4}' ) ) ); -- changes here

Cheers !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...