Skip to content

Commit 872f4a8

Browse files
authored
Merge pull request #134 from ssweber/fix-delete
Fix sqldriver to not delete NON update_cascade children
2 parents acb3bfb + aa1472c commit 872f4a8

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

pysimplesql/pysimplesql.py

+8-3
Original file line numberDiff line numberDiff line change
@@ -1382,7 +1382,10 @@ def delete_record(self, cascade:bool=True): # TODO: check return type, we return
13821382
return
13831383

13841384
# Delete child records first!
1385-
self.driver.delete_record(self, True)
1385+
result = self.driver.delete_record(self, True)
1386+
1387+
if result.exception is not None:
1388+
sg.popup(f"Query Failed! {result.exception}", keep_on_top=True)
13861389

13871390
# callback
13881391
if 'after_delete' in self.callbacks.keys():
@@ -4304,10 +4307,12 @@ def generate_query(self, dataset: DataSet, join_clause: bool = True, where_claus
43044307
def delete_record(self, dataset: DataSet, cascade=True): # TODO: get ON DELETE CASCADE from db
43054308
# Delete child records first!
43064309
if cascade:
4310+
child_deleted = []
43074311
for _ in dataset.frm.datasets:
43084312
for r in dataset.frm.relationships:
4309-
if r.parent_table == dataset.table:
4313+
if r.parent_table == dataset.table and r.update_cascade and (r.child_table not in child_deleted):
43104314
child = self.quote_table(r.child_table)
4315+
child_deleted.append(child)
43114316
fk_column = self.quote_column(r.fk_column)
43124317
q = f'DELETE FROM {child} WHERE {fk_column}={dataset.get_current(dataset.pk_column)}'
43134318
self.execute(q)
@@ -4317,7 +4322,7 @@ def delete_record(self, dataset: DataSet, cascade=True): # TODO: get ON DELETE C
43174322
table = self.quote_table(dataset.table)
43184323
pk_column = self.quote_column(dataset.pk_column)
43194324
q = f'DELETE FROM {table} WHERE {pk_column}={dataset.get_current(dataset.pk_column)};'
4320-
self.execute(q)
4325+
return self.execute(q)
43214326

43224327
def duplicate_record(self, dataset: DataSet, cascade: bool) -> ResultSet:
43234328
## https://stackoverflow.com/questions/1716320/how-to-insert-duplicate-rows-in-sqlite-with-a-unique-id

0 commit comments

Comments
 (0)