Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Oracle delete from tables with referential integrity

Posted on 2016-07-25
5
80 Views
Last Modified: 2016-08-16
Experts,
I have 3 tables say a, b and c. table a has the primary key 'a_id' and table b has the primary key 'b_id' and also foreign key from table a as 'a_id'. Table c has the primary key 'c_id' and the foreign key from table b which is 'b_id'.
If I want to delete a record from table a which has child record in table b and the child record in table b has a child record in table c.

can it be done in a single delete statement?
0
Comment
Question by:smalig
  • 3
5 Comments
 
LVL 32

Expert Comment

by:awking00
ID: 41728285
If you disable the foreign keys for tables b and c and table a was created with on delete cascade. You should be able to delete the record from table a. However, you would need to delete the child records from b and c before you could re-enable the foreign keys.
0
 
LVL 76

Accepted Solution

by:
slightwv (䄆 Netminder) earned 500 total points
ID: 41728290
If you set the constraints to cascade on delete, then a single delete will remove all the children as well.
0
 
LVL 32

Expert Comment

by:awking00
ID: 41728291
I meant to say if the delete rule for b and c is not cascade, you would need to remove the child records first before re-enabling.
0
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 41728292
in other terms: with the referential constraints ( foreign key ) enabled, you delete from table a only

ogherwise you delete from c first, then from b, finally from a
0
 
LVL 32

Expert Comment

by:awking00
ID: 41728295
slightwv is right. I should have stopped my initial response after the second sentence.
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Web Service from a stored procdure oracle 10 58
Can't Access My Database 57 76
ODBC in excel 2016 in Windows 10 via VBA 16 137
Row_number in SQL 6 33
Truncate is a DDL Command where as Delete is a DML Command. Both will delete data from table, but what is the difference between these below statements truncate table <table_name> ?? delete from <table_name> ?? The first command cannot be …
Checking the Alert Log in AWS RDS Oracle can be a pain through their user interface.  I made a script to download the Alert Log, look for errors, and email me the trace files.  In this article I'll describe what I did and share my script.
This videos aims to give the viewer a basic demonstration of how a user can query current session information by using the SYS_CONTEXT function
This video explains what a user managed backup is and shows how to take one, providing a couple of simple example scripts.

840 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question