约束违规错误

时间:2015-10-17 01:58:43

标签: sql oracle

我已将此表创建为我的作业的一部分,

create table course (
    cnum char(4) primary key,
    title varchar(20),
    credits number(1)
);

该表具有此检查约束cnum_ck

cnum like '[a-z][0-9][0-9][0-9]'

当我尝试插入以下行时

insert into course values('m130', 'xyz', 3);

它扔了check constraint cnum_ck violation error。我不知道哪里出错了。请帮忙

2 个答案:

答案 0 :(得分:2)

您正在使用LIKE的SQL Server模式,Oracle中LIKE不支持这些非标准通配符(除Sybase之外的任何其他数据库都不支持)。相反,使用正则表达式:

create table course (
    cnum char(4) primary key,
    title varchar(20),
    credits number(1),
    constraint chk_cnum check (regexp_like(cnum,  '^[a-z][0-9][0-9][0-9]$'))
);

insert into course values('m130', 'xyz', 3);

Here是一个SQL小提琴。

答案 1 :(得分:1)

约束使用正则表达式

所以它应该是regexp_like(cnum, '[a-z][0-9][0-9][0-9]')

相关问题