我正在尝试在SQLite中的表中插入值但是获取
SqLite.js未捕获错误:CHECK约束失败: st 。
我无法找到任何错误。有人可以帮助解决错误吗?
这是我的create table语句:
CREATE TABLE st(EMPLOYE_ID TEXT primary key , EMPLOYE_Name text NOT NULL ,
father_name text NOT NULL, cnic INTEGER NOT NULL,DOB real not null,address
text not null,
username text not null,password text not null, post text not null
CHECK(typeof(employe_id)='text' AND length(employe_id)<=10 and
(employe_name)='text' AND
length(employe_name)<=100 and (father_name)='text'
AND length(father_name)<=100 and(cnic)='integer' AND length(cnic)=13 and
(address)='text' and length(address)<=200
and (username)='text'
and length(username)<=10 and (password)='text' and length(password)<=20)
);
这是我的插入声明。
insert into st values('a1','jamshaid','iqbal',1110332507339,julianday('1998-
10-05'),'26 eb rehmkot','a1','a1','Admin');
答案 0 :(得分:1)
首先:始终指定专栏列表
insert into st(employe_id, employe_name, father_name, cnic, DOB, address, username, password,post)
values('a1','jamshaid','iqbal',1110332507339,julianday('1998-10-05'),'26 eb rehmkot','a1','a1','Admin');
其次,使用格式化更容易阅读和调试:
CREATE TABLE st(
EMPLOYE_ID TEXT primary key , -- typo: employee_id, and why not INT
EMPLOYE_Name text NOT NULL ,
father_name text NOT NULL,
cnic INTEGER NOT NULL,
DOB real not null, -- why is DOB real and not DATE???
address text not null,
username text not null,
password text not null, -- I hope this is not clear text
post text not null
CHECK(
typeof(employe_id)='text'
AND length(employe_id)<=10
and typeof(employe_name)='text'
AND length(employe_name)<=100
and typeof(father_name)='text'
AND length(father_name)<=100
and typeof(cnic)='integer'
AND length(cnic)=13
and typeof(address)='text'
and length(address)<=200
and typeof(username)='text'
and length(username)<=10
and typeof(password)='text'
and length(password)<=20
)
);
您可以轻松地以这种方式发现您的错误,或者只是对行进行注释直到它起作用。
<强> DBFiddle Demo 强>