Обсуждение: Constraint Problem
Dear Friends,
I have a very wierd problem. It should be obvious, but I can't
understand why.
I am using Postgresql 6.5.2, SuSe 6.2, Pentium III, Kernel Linux 2.2.10.
Please notice the error, it keeps saying ck_ngetest_disc_pin,
ck_ngetest_disc_country
is the cause of the problem.
I have inserted the correct value, but why keep giving error???
The wierdest part is, when I insert a value to field "disc_all", the
error mentioned
"ck_ngetest_disc_pin" !!!.... If the constraint was violated, the error
message
should be "ck_ngetest_disc_all".
create table ngetest ( custnum int8 NOT NULL, first_name varchar(15) NOT NULL, service_type
char NOT NULL, sex char NOT NULL, detailed_bill char NOT NULL, ngetest_status
charNOT NULL, disc_all char, disc_country char, disc_pin char,
constraint pk_ngetest PRIMARY KEY (custnum),
constraint ck_ngetest_service_type check (service_type = 'Y' or service_type = 'N' or service_type = 'G'
or service_type = 'M' or service_type = 'O' or service_type = 'D'),
constraint ck_ngetest_status check (ngetest_status = 'A' or ngetest_status = 'I' or ngetest_status = 'S'
or ngetest_status = 'T'),
constraint ck_ngetest_disc_all check (disc_all = 'Y' or disc_all = 'N'), constraint ck_ngetest_disc_country
check (disc_country = 'Y' or disc_country = 'N'), constraint ck_ngetest_disc_pin check (disc_pin = 'Y' or
disc_pin= 'N') );
insert into ngetest
(custnum, first_name, service_type, sex, detailed_bill, ngetest_status,
disc_all)
values
(1,'Bob','Y','M','Y','A','Y');
ERROR: ExecAppend: rejected due to CHECK constraint ck_ngetest_disc_pin
insert into ngetest
(custnum, first_name, service_type, sex, detailed_bill, ngetest_status,
disc_country)
values
(2,'Mike','Y','M','Y','A','Y');
ERROR: ExecAppend: rejected due to CHECK constraint ck_ngetest_disc_pin
insert into ngetest
(custnum, first_name, service_type, sex, detailed_bill, ngetest_status,
disc_pin)
values
(3,'John','Y','M','Y','A','Y');
ERROR: ExecAppend: rejected due to CHECK constraint
ck_ngetest_disc_country
Regards,
Chairudin Sentosa
************
Chairudin Sentosa Harjo <chai@prima.net.id> wrote in message news:37F319C6.FA5B5536@prima.net.id... > Dear Friends, > > I have a very wierd problem. It should be obvious, but I can't > understand why. > > I am using Postgresql 6.5.2, SuSe 6.2, Pentium III, Kernel Linux 2.2.10. > > Please notice the error, it keeps saying ck_ngetest_disc_pin, > ck_ngetest_disc_country > is the cause of the problem. > I have inserted the correct value, but why keep giving error??? > > The wierdest part is, when I insert a value to field "disc_all", the > error mentioned > "ck_ngetest_disc_pin" !!!.... If the constraint was violated, the error > message > should be "ck_ngetest_disc_all". > > > create table ngetest > ( > custnum int8 NOT NULL, > first_name varchar(15) NOT NULL, > service_type char NOT NULL, > sex char NOT NULL, > detailed_bill char NOT NULL, > ngetest_status char NOT NULL, > disc_all char, > disc_country char, > disc_pin char, > > constraint pk_ngetest PRIMARY KEY (custnum), > > constraint ck_ngetest_service_type check > (service_type = 'Y' or > service_type = 'N' or > service_type = 'G' or > service_type = 'M' or > service_type = 'O' or > service_type = 'D'), > > constraint ck_ngetest_status check > (ngetest_status = 'A' or > ngetest_status = 'I' or > ngetest_status = 'S' or > ngetest_status = 'T'), > > constraint ck_ngetest_disc_all check > (disc_all = 'Y' or > disc_all = 'N'), > constraint ck_ngetest_disc_country check > (disc_country = 'Y' or > disc_country = 'N'), > constraint ck_ngetest_disc_pin check > (disc_pin = 'Y' or > disc_pin = 'N') > ); > > insert into ngetest > (custnum, first_name, service_type, sex, detailed_bill, ngetest_status, > disc_all) > values > (1,'Bob','Y','M','Y','A','Y'); > ERROR: ExecAppend: rejected due to CHECK constraint ck_ngetest_disc_pin disc_pin is null in this statement and constraint ck_ngetest_disc_pin says that it can' t be null Bye Claudio