我创建了一个信息表,用于存储员工记录,SQL查询如下...
CREATE TABLE info1 (
empid VARCHAR(8) PRIMARY KEY CONSTRAINT empchk
CHECK (empid IN ('kh\%' ESCAPE '\''),
initials CHAR(6), fname CHAR(25) NOT NULL,
lname CHAR(25),
userstatus INTEGER NOT NULL,
designation CHAR(10) NOT NULL
);
现在,您可以看到empid
中的约束是kh%
,其中 - 据我记得 - %
表示任意数量的以下字符(仅限8
当然)可以是任何东西,对吗?
我正在使用Java DB,奇怪的是它也将%
符号作为字符串的一部分,所以如果我输入khce0001
,它会说empchk
违规,它只需要在kh%
我该怎么办?为什么会这样?
答案 0 :(得分:1)
此SQL查询中的错误是我使用了IN
而不是LIKE
(我相信它会进行通配符检查),所以
我放弃了约束......
ALTER TABLE info DROP CONSTRAINT empchk;
并用...更改了表格。
ALTER TABLE info ADD CONSTRAINT empchk CHECK (empid LIKE ('kh%'));
因此正确的SQL查询应该是......
CREATE TABLE info1 (
empid VARCHAR(8) PRIMARY KEY CONSTRAINT empchk
CHECK (empid LIKE ('kh%')),
initials CHAR(6),
fname CHAR(25) NOT NULL,
lname CHAR(25),
userstatus INTEGER NOT NULL,
designation CHAR(20) NOT NULL
);