close ad
Install the LAtest Updates to Work with CC 2017 and CC 2018
open ad
View Menu

Technical Support Forums

Free, outstanding support from WebAssist and your colleagues

rating

Cannot add or update a child row: a foreign key constraint fails - when not all lookup table inputs

Thread began 1/07/2014 6:21 pm by david_allen | Last modified 1/31/2014 4:59 pm by Jason Byrnes | 1510 views | 10 replies |

david_allen

Cannot add or update a child row: a foreign key constraint fails - when not all lookup table inputs

Re my app to create a list of industry updates, now built of course via DataAssist. (One table holds the industry updates; six lookup tables supply standard input items. Of course I can send a screen shot of theses tables in Workbench, if useful):

Insert works fine, and the result can later be found via Search - so long as all the items dependent on lookup tables are selected. But when I try to Insert - but without making a choice from all of the drop downs populated via the lookup tables - the error, in the browser, is of the type (one example):

Cannot add or update a child row: a foreign key constraint fails (`reglinktrial`.`industry_updates`, CONSTRAINT `fk_industry_updates_regions` FOREIGN KEY (`regions_idregion`) REFERENCES `regions` (`idregion`) ON DELETE NO ACTION ON UPDATE NO ACTION)

(In this case, the selection that was not made, causing the foreign key failure, is a 'region,' to go in the 'industry_update.')

Consistently, whatever lookup item has not had a selection becomes the foreign key constraint that causes failure. Perhaps it is worth noting that not filling in a field in the industry updates table, itself, causes no problem; the Insert sails through in that case.

Not every industry update to be Inserted will use all of the items from the lookup tables. Which is why this matters of course.

Is there some insight as to what is happening? And of course, a solution? I will post more detail if needed.

Thanks.

Sign in to reply to this post

Jason ByrnesWebAssist

you have added foreign keys to the table which are causing the constraints, don't add the foreign keys to the table definition.

Sign in to reply to this post

david_allen

Thanks Jason.

My understanding is not complete then. As I understand, foreign keys are necessary to 'hook' the lookup tables with the main industry updates table.

Where have I got this wrong? How / will it work if the foreign keys are removed?

Sign in to reply to this post

Jason ByrnesWebAssist

when you create a foreign key in the database, it creates the type of constraint on the data that you are having a problem with.

a foreign key is not needed in the table definition though for you to use a column as a foreign key.

it is only needed if you want to force referential integrity, but from your description referential integrity is not needed for your app. therefore explicitly defining the foreign key is not needed.

Sign in to reply to this post

david_allen

Thanks.

So, use the column as a foreign key, but not with an explicit foreign key. Can you point to something that explains how to do that? Or, can you say? Particularly using MySQL Workbench, since I have become reasonably familiar with it.

Sign in to reply to this post

Jason ByrnesWebAssist

in the table don't define the foriegn jeys.


you use the column as a foreign key by using the primary key values to create the relationship.


the probelm is that you have defined the keys in the tables.

the only keys needed in the tables are the primary keys.


take this example:

products:
productID - Primary Key
productName
etc

categoris:
categoryID - Primary Key
categoryName

productcategories
productcatagoryID - Primary Key
productcatagoryProductID - relates to products.productID (but do not define a foreign key)
productcatagoryCategoryID - relates to categoris.categoryID (but do not define a foreign key)

no foreign key needs to be defined, but it can still be used as a foreign key by storing the productID and categoryID to create the relationship.

Sign in to reply to this post

david_allen

So fine, Jason - thank you very much!

Sign in to reply to this post

Jason ByrnesWebAssist

you're welcome

Sign in to reply to this post

david_allen

Onward.

Sign in to reply to this post

david_allen

(Sorry for the hiatus in coming back on this. Illness unfortunately delayed the matter until now.)

This solution - again, thanks indeed - forms a so-called 'linking table,' between the two original tables. If I am correct.

With the prior database arrangement (with foreign keys but no linking table), DataAssist so nicely served to create the Insert, Update, Search, Results pages. With this new arrangement, may I check? Will DataAssist also work, more or less seamlessly, with the linking table setup, to create the pages?

Or if not, what further will be necessary?

Thanks.

Sign in to reply to this post
loading

Build websites with a little help from your friends

Your friends over here at WebAssist! These Dreamweaver extensions will assist you in building unlimited, custom websites.

Build websites from already-built web applications

These out-of-the-box solutions provide you proven, tested applications that can be up and running now.  Build a store, a gallery, or a web-based email solution.

Want your website pre-built and hosted?

Close Windowclose

Rate your experience or provide feedback on this page

Account or customer service questions?
Please user our contact form.

Need technical support?
Please visit support to ask a question

Content

rating

Layout

rating

Ease of use

rating

security code refresh image

We do not respond to comments submitted from this page directly, but we do read and analyze any feedback and will use it to help make your experience better in the future.

Close Windowclose

We were unable to retrieve the attached file

Close Windowclose

Attach and remove files

add attachmentAdd attachment
Close Windowclose

Enter the URL you would like to link to in your post

Close Windowclose

This is how you use right click RTF editing

Enable right click RTF editing option allows you to add html markup into your tutorial such as images, bulleted lists, files and more...

-- click to close --

Uploading file...