Bug #24505 | Problem with FOREIGN KEY Constraint creation for varchar datatype | ||
---|---|---|---|
Submitted: | 22 Nov 2006 13:22 | Modified: | 23 Dec 2006 14:58 |
Reporter: | Hari A | Email Updates: | |
Status: | No Feedback | Impact on me: | |
Category: | MySQL Server | Severity: | S1 (Critical) |
Version: | 5.0.11 | OS: | Windows (Windows 2000 server) |
Assigned to: | CPU Architecture: | Any |
[22 Nov 2006 13:22]
Hari A
[22 Nov 2006 13:37]
Valeriy Kravchuk
Thank you for a problem report. Please, try to repeat with a newer version (5.0.27 or 5.1.12) and, in case of similar problem, send exact CREATE TABLE statements used to create tables initially.
[23 Nov 2006 5:55]
Hari A
Hi, Thank you for your response,now I am sending the Table structure. Table 1:icdcodes (This is the Master Table) CREATE TABLE `sw_icdcodes` ( `ICDCode` varchar(20) NOT NULL default '0', `Descr` varchar(255) default NULL, `SDescr` varchar(255) NOT NULL default '' COMMENT 'PARENT CODE', `PrntCode` varchar(20) default NULL, PRIMARY KEY (`ICDCode`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='InnoDB free: 10240 kB; InnoDB free: 9216 kB'; Table 2:sw_claims(Detail table) -------- CREATE TABLE `sw_claims` ( `ClId` int(10) NOT NULL auto_increment, `ClmId` int(10) NOT NULL default '0' COMMENT 'Claim ID', `Id` int(10) NOT NULL default '0' COMMENT 'Enrollment ID', `PrvId` int(10) NOT NULL default '0' COMMENT 'Provider ID', `BenClsId` int(10) NOT NULL default '0' COMMENT 'Benfit ClassificationID', `MedSrvId` int(10) NOT NULL default '0' COMMENT 'Medical Service ID', `CPTCode` varchar(20) default NULL COMMENT 'Current Procedure Terminology Code', `LocSrvId` int(10) NOT NULL default '0' COMMENT 'Location Service ID / Service Location ID', `UsrId` int(11) NOT NULL default '0' COMMENT 'User ID', `ClmDt` date default NULL COMMENT 'Claim Date', `BldChrg` decimal(15,2) NOT NULL default '0.00' COMMENT 'Billed Charges', `ElgChrg` decimal(15,2) NOT NULL default '0.00' COMMENT 'Eligible Charges', `LocId` int(10) NOT NULL default '0' COMMENT 'Location ID', `HpClsId` int(10) NOT NULL default '0' COMMENT 'Health Plan Classification ID', `Deduc` decimal(15,2) NOT NULL default '0.00' COMMENT 'Deductible', `Copay` decimal(15,2) NOT NULL default '0.00' COMMENT 'Co-pay', `COB` decimal(15,2) NOT NULL default '0.00' COMMENT 'Co-ordination of Benefits', `DOSSt` date default NULL COMMENT 'Start date of service', `DOSEnd` date default NULL COMMENT 'End date of service', `MemId` int(10) NOT NULL default '0' COMMENT 'Member ID', `AdmsDt` date default NULL COMMENT 'Admission Date', `DisChrgDt` date default NULL COMMENT 'Discharge Date', `NwDisc` decimal(15,2) default NULL COMMENT 'Network Discount', `EmpPay` decimal(15,2) default NULL COMMENT 'Employee Pay', `ClaimPaid` decimal(15,2) default NULL, `EmprPay` decimal(15,2) default NULL COMMENT 'Employer Pay', `ClmTypeId` int(10) unsigned default NULL COMMENT 'Claim Type ID', `Specialty` varchar(45) NOT NULL default '' COMMENT 'Specialty', `UandCChrg` decimal(10,0) NOT NULL default '0' COMMENT 'Usual and Customary Charges', `NDC` varchar(45) NOT NULL default '' COMMENT 'Drug Code', `RxName` varchar(45) NOT NULL default '' COMMENT 'Name of the Drug', `RxPaid` decimal(10,0) NOT NULL default '0' COMMENT 'Paid for Drug', `ICDCode` varchar(20) NOT NULL, PRIMARY KEY (`ClId`), KEY `Ref_19` (`CPTCode`), KEY `Ref_21` (`Id`), KEY `Ref_22` (`BenClsId`), KEY `Ref_35` (`MedSrvId`), KEY `Ref_36` (`LocSrvId`), KEY `Ref_30` (`PrvId`), KEY `Ref_18` (`ICDCode`), CONSTRAINT `Ref_20` FOREIGN KEY (`Id`) REFERENCES `sw_enrollinfo` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `Ref_21` FOREIGN KEY (`Id`) REFERENCES `sw_enrollinfo` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `Ref_22` FOREIGN KEY (`BenClsId`) REFERENCES `sw_benclf` (`BenClsId`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `Ref_30` FOREIGN KEY (`PrvId`) REFERENCES `sw_provider` (`PrvId`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `Ref_35` FOREIGN KEY (`MedSrvId`) REFERENCES `sw_medsrv` (`MedSrvId`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `Ref_36` FOREIGN KEY (`LocSrvId`) REFERENCES `sw_locofsrv` (`LocSrvId`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='InnoDB free: 10240 kB; (`BENCLASSID`) REFER `sweeper/sw_ben_'; Now I am trying to add FOREIGN KEY on ICDCode(sw_claims) REFERENCES (sw_icdcodes), I am getting this error ALTER TABLE `sweepertest`.`sw_claims` ADD CONSTRAINT `FK_sw_claims_7` FOREIGN KEY `FK_sw_claims_7` (`ICDCode`) REFERENCES `sw_icdcodes` (`ICDCode`) ON DELETE RESTRICT ON UPDATE RESTRICT; MySQL Error Number 1452 Cannot add or update a child row: a foreign key constraint fails (`sweepertest/#sql-260_2216`, CONSTRAINT `FK_sw_claims_7` FOREIGN KEY (`ICDCode`) REFERENCES `sw_icdcodes` (`ICDCode`)) Thanks Hari
[23 Nov 2006 9:49]
Sveta Smirnova
CREATE TABLE `sw_claims` statement contains mistake. Please provide output of SHOW CREATE TABLE `sw_claims`.
[23 Nov 2006 10:13]
Hari A
Hi, SHOW CREATE TABLE `sw_claims` --------------------------- CREATE TABLE `sw_claims` ( `ClId` int(10) NOT NULL auto_increment, `ClmId` int(10) NOT NULL default '0' COMMENT 'Claim ID', `Id` int(10) NOT NULL default '0' COMMENT 'Enrollment ID', `PrvId` int(10) NOT NULL default '0' COMMENT 'Provider ID', `BenClsId` int(10) NOT NULL default '0' COMMENT 'Benfit ClassificationID', `MedSrvId` int(10) NOT NULL default '0' COMMENT 'Medical Service ID', `CPTCode` varchar(20) default NULL COMMENT 'Current Procedure Terminology Code', `LocSrvId` int(10) NOT NULL default '0' COMMENT 'Location Service ID / Service Location ID', `UsrId` int(11) NOT NULL default '0' COMMENT 'User ID', `ClmDt` date default NULL COMMENT 'Claim Date', `BldChrg` decimal(15,2) NOT NULL default '0.00' COMMENT 'Billed Charges', `ElgChrg` decimal(15,2) NOT NULL default '0.00' COMMENT 'Eligible Charges', `LocId` int(10) NOT NULL default '0' COMMENT 'Location ID', `HpClsId` int(10) NOT NULL default '0' COMMENT 'Health Plan Classification ID', `Deduc` decimal(15,2) NOT NULL default '0.00' COMMENT 'Deductible', `Copay` decimal(15,2) NOT NULL default '0.00' COMMENT 'Co-pay', `COB` decimal(15,2) NOT NULL default '0.00' COMMENT 'Co-ordination of Benefits', `DOSSt` date default NULL COMMENT 'Start date of service', `DOSEnd` date default NULL COMMENT 'End date of service', `MemId` int(10) NOT NULL default '0' COMMENT 'Member ID', `AdmsDt` date default NULL COMMENT 'Admission Date', `DisChrgDt` date default NULL COMMENT 'Discharge Date', `NwDisc` decimal(15,2) default NULL COMMENT 'Network Discount', `EmpPay` decimal(15,2) default NULL COMMENT 'Employee Pay', `ClaimPaid` decimal(15,2) default NULL, `EmprPay` decimal(15,2) default NULL COMMENT 'Employer Pay', `ClmTypeId` int(10) unsigned default NULL COMMENT 'Claim Type ID', `Specialty` varchar(45) NOT NULL default '' COMMENT 'Specialty', `UandCChrg` decimal(10,0) NOT NULL default '0' COMMENT 'Usual and Customary Charges', `NDC` varchar(45) NOT NULL default '' COMMENT 'Drug Code', `RxName` varchar(45) NOT NULL default '' COMMENT 'Name of the Drug', `RxPaid` decimal(10,0) NOT NULL default '0' COMMENT 'Paid for Drug', `ICDCode` varchar(20) NOT NULL, PRIMARY KEY (`ClId`), KEY `Ref_19` (`CPTCode`), KEY `Ref_21` (`Id`), KEY `Ref_22` (`BenClsId`), KEY `Ref_35` (`MedSrvId`), KEY `Ref_36` (`LocSrvId`), KEY `Ref_30` (`PrvId`), KEY `Ref_18` (`ICDCode`), KEY `ICDCode` (`ICDCode`), CONSTRAINT `Ref_20` FOREIGN KEY (`Id`) REFERENCES `sw_enrollinfo` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `Ref_21` FOREIGN KEY (`Id`) REFERENCES `sw_enrollinfo` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `Ref_22` FOREIGN KEY (`BenClsId`) REFERENCES `sw_benclf` (`BenClsId`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `Ref_30` FOREIGN KEY (`PrvId`) REFERENCES `sw_provider` (`PrvId`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `Ref_35` FOREIGN KEY (`MedSrvId`) REFERENCES `sw_medsrv` (`MedSrvId`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `Ref_36` FOREIGN KEY (`LocSrvId`) REFERENCES `sw_locofsrv` (`LocSrvId`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='InnoDB free: 10240 kB; (`BENCLASSID`) REFER `sweeper/sw_ben_'
[23 Nov 2006 14:58]
Valeriy Kravchuk
Please, try to repeat with a newer version (5.0.27 or 5.1.12) and, in case of similar problem, send also exact CREATE TABLE statements for tables refertenced by FOREIGN KEYs. We need a complete and repeatable test case.
[24 Dec 2006 0:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[31 Jan 2008 6:26]
sanjeev Rao
I think that problem is not with th esyntactically. While you putting a foreign key on a particular column you need to verify the data in both the columns. Example: i hav a table "parent" with column "childid" table "child" with column "id" So i want foreign key relation here::(assume "childid" has the data like 1,2,3 and "id" has no values) So, now if i try to foreign key relation it'll raise error. So now u insert same child id values into "id" of child table and then try.... ...... SANJAY...