如何在约束中正确使用REGEXP_LIKE

问题描述 投票:0回答:1

我想使用一个约束,要求输入为“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

oracle constraints
1个回答
1
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.