RE: MySQL question (ON DELETE CASCADE) 08-15-2018, 04:43 PM
#9
(08-15-2018, 03:44 PM)Mansispicher39 Wrote:(08-15-2018, 11:35 AM)mothered Wrote:(08-15-2018, 10:55 AM)Mansispicher39 Wrote: When you have to delete a record in parent table and if it has relations to other records in other tables (aka foreign keys - example subjects to students might be one to many relation aka many students can study one subject -> John and Kate can study math and they are related to that record) and when you try to delete that subject record the sql wont let you cuz there are still existing relations to this record(John and Kate) so the cascade drop first deletes this 2 students and after that it deletes the Subject.. You can image this situation but with tons of other relations thank god for the ORM-sD
Alternatively, you can delete the Foreign key from the child table(s) that corresponds to the Primary key In the parent table, then manipulate the parent table as you please. Then simply add the Foreign key back to the child tables when finished.
It's a little bit of messing around, but gets the job done.
Yea but in case when you have for example 10 nested relations you have to "manually" one by one remove the FKeys
Agree.
As mentioned, It Is messing around a bit, but you can have your SQL ready and only change the table names and Foreign keys accordingly.
For example:
* Delete the Foreign key from the `User Data` table (child table):
Code:
ALTER TABLE `User Data` DROP FOREIGN KEY `User Data_ibfk_1`;* Do whatever you wish to the parent table (which Is `User IDs`), and then add the Foreign key back Into child table (which Is `User Data`). I've used the ON UPDATE & ON DELETE CASCADE clauses for demonstration purposes:
Code:
ALTER TABLE `User Data` ADD FOREIGN KEY (mothered) REFERENCES `User IDs` (mothered) ON UPDATE CASCADE ON DELETE CASCADE;It's not too time consuming to only alter the table names & respective Foreign keys.














D![[+]](https://sinister.li/images/modern/collapse_collapsed.png)