DBI icon indicating copy to clipboard operation
DBI copied to clipboard

cascade option for `dbRemoveTable()`

Open asadow opened this issue 1 year ago • 2 comments

I'm not sure how to create a temporary Postgres to reprex this.

Is a cascade option for dbRemoveTable() worth it? I was playing around with the dm package and wanted to clean my database of all tables. I got the below error. Then I checked for a cascade option. However the challenge was easily circumvented by dropping the child table manually first, before running map().

purrr::map(dbListTables(conn), \(x) dbRemoveTable(conn, x))
Error in `purrr::map()`:
ℹ In index: 1.
Caused by error:
! Failed to fetch row : ERROR:  cannot drop table department because other objects depend on it
DETAIL:  constraint employee_dept_fkey on table employee depends on table department
HINT:  Use DROP ... CASCADE to drop the dependent objects too.

asadow avatar Feb 08 '24 15:02 asadow

Thanks. Not all databases support CASCADE, and it seems very easy to create an SQL that does just that. I'd be open to supporting sqlRemoveTable(), similarly to sqlCreateTable() .

krlmlr avatar Feb 08 '24 20:02 krlmlr

The objective would be to make it easy for the user to append " CASCADE" to a query created by that function.

krlmlr avatar Feb 08 '24 20:02 krlmlr