Monday 15 February 2010

sql - Error ORA-02291: integrity constraint -



sql - Error ORA-02291: integrity constraint -

i maintain getting error when trying populate db tables. code create tables:

create table tbcustomer ( customerid char(4) not null constraint rg_customerid check (customerid between '1000' , '4999') constraint pk_customer primary key, customername varchar2(40) not null, customeraddress varchar2(50) null, customercity varchar2(30) null, customerstate char(2) null, customerzip varchar2(10) null, customercontact varchar2(30) null, customerphone varchar2(12) null, customeremail varchar2(50) null); create table tborder ( orderno number(11,0) not null constraint pk_order primary key, orderdate date not null, customerid char(4) not null constraint fk_customerid_tborder references tbcustomer on delete cascade); create table tbproduct ( productid char(3) not null constraint pk_product primary key constraint rg_productid check (productid between '100' , '999'), productname varchar2(30) not null, budgetsales number(4,0)); create table tbvendor ( vendorid char(4) not null constraint pk_vendor primary key constraint rg_vendorid check (vendorid between '5000' , '9999'), vendorname varchar2(25) not null, vendoraddress varchar2(50) null, vendorcity varchar2(30) null, vendorstate char(2) null, vendorzip varchar2(10) null); create table tbitem ( productid char(4) not null, vendorid char(4) not null, itemprice number(10,2) null constraint rg_itemprice check (itemprice>=0.00), qoh number(8,0) not null, constraint fk_productid_tbitem foreign key (productid) references tbproduct (productid), constraint fk_vendorid foreign key (vendorid) references tbvendor (vendorid), constraint pk_item primary key (productid, vendorid)); create table tborderitem ( orderno number(11,0) not null constraint fk_orderno_tbborderitem references tborder (orderno) on delete cascade, orderitemno char(2) not null, productid char(3) not null, vendorid char(4) not null, quantity number(4,0) not null, itemprice number(10,2) null, constraint pk_orderitem primary key (orderno, orderitemno)); constraint fk_productid_vendorid foreign key (productid, vendorid) references tbitem (productid, vendorid) on delete cascade);

and code utilize populate tables:

insert tbcustomer values ('1123','z best','123 main street','cambridge','ma','02139','carol jenkins','617-555-2222','jenskinssc@abc.com'); insert tbcustomer values ('1234','pop shop','2233 spring street','boston','ma','02114','mandy peters','617-344-1111','mpeters@def.com'); insert tbcustomer values ('1667','zoom','4545 winter street','boston','ma','02112','james hughes','617-433-3333','jhughes@zoomco.com'); insert tbvendor values ('5100','wesell','233 south willow street','manchester','nh','03102'); insert tbvendor values ('5200','givin', '33 harvard place','boston','ma','02211'); insert tbvendor values ('5300','z list','4500 summer street','quincy','ma','02161'); insert tbproduct values ('100','microwave','40'); insert tbproduct values ('121','toaster','30'); insert tbproduct values ('434','steamer','40'); insert tbproduct values ('677','coffee maker','20'); insert tborder values ('1','10-oct-12','1667'); insert tborder values ('2','12-oct-12','1234'); insert tborder values ('3','13-oct-12','1667'); insert tbitem values ('100','5100','55','22'); insert tbitem values ('100','5200','66','20'); insert tbitem values ('100','5300','70','35'); insert tbitem values ('121','5100','12','20'); insert tbitem values ('121','5300','15','15'); insert tbitem values ('434','5100','18','35'); insert tbitem values ('434','5200','25','25'); insert tbitem values ('677','5100','40','20'); insert tbitem values ('677','5200','46','30'); insert tbitem values ('677','5300','48','20'); insert tborderitem values ('1','01','100','5300','5','70'); insert tborderitem values ('1','02','100','5100','5','55'); insert tborderitem values ('1','03','121','5100','5','12'); insert tborderitem values ('2','01','100','5200','10','65'); insert tborderitem values ('2','02','677','5300','5','48'); insert tborderitem values ('3','01','121','5100','5','12'); insert tborderitem values ('3','02','677','5300','3','45'); insert tborderitem values ('3','03','100','5100','2','55');

when run script maintain getting error when inserting values tbitem table:

60-sql>insert tbitem values ('677','5300','48','20'); insert tbitem values ('677','5300','48','20') * error @ line 1: ora-02291: integrity constraint (mquijano.fk_productid_tbitem) violated -parent key not found

i same error when trying insert values tborderitem:

60-sql>insert tborderitem values ('1','01','100','5300','5','70'); insert tborderitem values ('1','01','100','5300','5','70') * error @ line 1: ora-02291: integrity constraint (mquijano.fk_productid_vendorid) violated -parent key not found

how can prepare this?

the problem may not have same field types keys in first example. notice in tbproduct said:

productid char(3)

and in tbitem said:

productid char(4)

and 1 time again in border item said:

productid char(3)

try changing tbitem table have productid length of 3.

sql oracle foreign-keys

No comments:

Post a Comment