mysql - SQL delete all rows for all children -


is possible in mysql delete children recursively based on parent table?

suppose have

+-------+ |tbl1.id|   +-------+    +-------+--------------------------+   |tbl2.id|tbl2.parentid (fk tbl1.id)|   +-------+--------------------------+    +-------+--------------------------+ |tbl3.id|tbl3.parentid (fk tbl2.id)|   +-------+--------------------------+   

now, can't delete rows tbl1 because tbl2 has references tbl1.id, , can't delete tbl2 because tlb3 has references tbl2.

is possible generate sql query using mysql list order tables have deleted? or lists dependency of tables, starting farthest child?

i don't want drop tables, delete rows of set of tables , children, , children, ...

currently have several scripts, 1 per parent table delete children, i'd automate that.

edit 1: database in development mode, new tables , constraints still being added it.

i don't own database, doesn't have cascade delete. could add cascade delete copy sent me, work using scripts have today.

lets want delete rows on tbl1 id equal 5, , related rows in tables : tbl2 , tbl3, can in single transaction 1 :

start transaction delete tbl3 exists (select 1 tbl2 join tbl1 on tbl1.id = tbl2. parentid , tbl1.id = 5 id = tbl3.parentid); delete tbl2 exists (select 1 tbl1 id = tbl2.parentid , id = 5); delete tbl1 id = 5; commit 

if follow convention naming fields on tables, can generate script dynamically plsql querying information_schema.tables views :

select table_name, column_name information_schema.tables t    join information_schema.columns c on c.table_name = t.table_name , table_schema = 'db_name'    table_schema = 'db_name'   , table_name 'tbl_' , column_name 'parentid'   order table_name desc 

Comments

Popular posts from this blog

php - render data via PDO::FETCH_FUNC vs loop -

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

The canvas has been tainted by cross-origin data in chrome only -