【发布时间】:2018-02-15 09:08:07
【问题描述】:
我正在创建一个表,并希望将检查约束添加到其中的两列,以便只能将字母值插入到列中。这是正在创建的表:
CREATE TABLE PERSON
(
Forename VARCHAR(30) NOT NULL,
Surname VARCHAR(30) NOT NULL
);
名字和姓氏列应该只允许插入字母值。我已经尝试了这两种不同的检查约束,但是它们不起作用,因为我仍然可以将数字值插入到名字列中:
CONSTRAINT FN_LETTERS_ONLY_CK CHECK(FORENAME NOT LIKE ‘%’ +’[^A-Z]’+’%’),
CONSTRAINT FN_LETTERS_ONLY CHECK(REGEXP_LIKE(FORENAME, ‘^[[:ALPHA:]]+$’))
【问题讨论】:
-
“没有用”并不是很有帮助。你真的对这些字符串使用了大引号吗?和大写
ALPHA而不是alpha在第二个?两者都会导致错误,而不是允许插入数字。但是第二个应该可以正常工作。 -
是的,我的意思是没有工作是约束不会被应用并且数字仍然会被插入到这些列中而不会引发错误。关于大写字母 ALPHA,我是 SQL 新手,认为大小写无关紧要,所以感谢您告诉我区分大小写。