我已经将表格装满了数据,我试图添加一个约束,只允许将字母输入到我已命名为studentfname的属性中。我已经尝试了各种不同的REGEXP,但是在插入它们时没有出现错误似乎无法工作。
我不确定它是语法错误还是什么!
编辑:这是我尝试过的以及我得到的错误:
ALTER TABLE STUDENT
ADD CONSTRAINT
check_name
CHECK(regexp_like(studentfname,'^[A-Za-z''-]+$'));
错误:
QL Error: ORA-02293: cannot validate (JEIGH7.CHECK_NAME) - check constraint violated
02293. 00000 - "cannot validate (%s.%s) - check constraint violated"
*Cause: an alter table operation tried to validate a check constraint to
populated table that had nocomplying values.
*Action: Obvious
答案 0 :(得分:1)
显然,您可以尝试运行以下查询以检查上述列中是否存在任何非整数数据,这会阻止您应用检查约束。从此查询获得输出后,尝试更新/删除该行,然后应用约束。希望这会有所帮助。
SELECT studentfname nm FROM STUDENT a
WHERE NOT regexp_like(a.nm,'^[A-Za-z''-]+$');