Eight Years of Service
Posts: 1,890
Threads: 73
MySQL question (ON DELETE CASCADE) 08-09-2018, 05:15 PM
#1
Hello all,
got a question, what would happen if you don't use "ON DELETE CASCADE" in a mysql database? Like, what is the consequence of not doing so if you're wanting to remove a table or row?
thanks,
- Mimi
•
Fourteen Years of Service
Posts: 74,287
Threads: 317
RE: MySQL question (ON DELETE CASCADE) 08-09-2018, 05:56 PM
#2
Are you using the SQL FOREIGN KEY constraint? When you delete data from the parent table, the same will be deleted In the child table.
If you wish to delete a table, simply use the SQL DROP statement. To delete a column row, use the SQL DELETE statement and the SQL WHERE clause. The latter defines what column row(s) you wish to delete.
•
Nine Years of Service
Posts: 159
Threads: 15
RE: MySQL question (ON DELETE CASCADE) 08-10-2018, 12:03 AM
#3
mothered explained it pretty well. I'd also like to add that "ON DELETE CASCADE" is very rarely the best option. It causes way more issues than it solves especially with people inexperienced with schema design.
(This post was last modified: 08-10-2018, 12:03 AM by Hoss.)
•
Eight Years of Service
Posts: 3,059
Threads: 251
RE: MySQL question (ON DELETE CASCADE) 09-24-2018, 09:41 PM
#10
(08-15-2018, 04:43 PM)mothered Wrote: (08-15-2018, 03:44 PM)Mansispicher39 Wrote: (08-15-2018, 11:35 AM)mothered Wrote: 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.
I totally agree
My IT skills that I know perfect is SQL, HTML ,css ,wordpress, PHP.
coding skills that I know is Java, JavaScript and C#
•