SqLite.JS Uncaught ошибка: не удалось проверить ограничение
Я пытаюсь вставить значения в таблицу в SQLite, но получаю
SqLite.JS Uncaught ошибка: провалилось ограничение проверки: 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');
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 ) );
Вы можете легко обнаружить свою ошибку таким образом или просто комментировать строки, пока она не заработает.