如何在客户表中添加对列 first_name (varchar2(20)) 的约束,以使插入列中的值不包含数字?
我想我找到了可能的解决方案:
ALTER TABLE customers
ADD CONSTRAINT first_name_check
CHECK (REGEXP_LIKE(first_name,'^[[:alpha:][:blank:][:cntrl:][:punct:]]+$')) NOVALIDATE;
还:
ALTER TABLE customers
ADD CONSTRAINT first_name_check
CHECK (NOT REGEXP_LIKE(first_name,'[[:digit:]]')) NOVALIDATE;
但是,有没有更好的方法呢?在 REGEXP_LIKE 之前没有使用所有这些字符类并且没有“NOT”?
我认为这会起作用:
ALTER TABLE customers
ADD CONSTRAINT first_name_check
CHECK (NOT REGEXP_LIKE(first_name,'^[^[:digit:]]+$')) NOVALIDATE;
但是我错了。你能解释一下为什么吗?